【PHP】include、requireの出力を変数として取得する方法

PHPでファイルを読み込む、include(include_once含む)、require(require_once含む)は、記述時にその内容が出力されてしまいます。

しかし、includeやrequireの内容を即出力せず、変数として受け取りたい時がありますので、処理をまとめました。

include、requireの出力制御はob_start()を使う

PHPで出力するタイミングを制御したい場合は、ob_start()という関数を使用します。

ob_start()は、表示させる内容を即出力せず、バッファという領域に保存し、任意のタイミングで変数として取得することが出来ます。

PHPでob_startの使い方。出力タイミングを制御しよう
PHPで出力の制御を行うob_start()と、合わせて使用する関数についてまとめました。覚えることで出力内容を変数で取得したり等、自在に出力タイミングを決めることが可能です。

これはinclude先の「hello_text.php」の中身です。

Hello, <?php echo $name ?>!

そして、このファイルの読み込みを変数として受け取ります。

$name = 'Taro';

ob_start(); //バッファ制御スタート
include("hello_text.php");
$text = ob_get_clean(); //バッファ制御終了&変数を取得

echo 'includeで「'.$text.'」を取得しました。';
includeで「Hello, Taro!」を取得しました。

file_get_contentsとの違い

ファイルを読み込み、さらに変数として取得できるfile_get_contents()という関数があります。

しかしfile_get_contents()は、呼び出し元で定義されている変数や関数を使用できません。

$name = 'Taro';

$text = file_get_contents("hello_text.php");
echo 'includeで「'.$text.'」を取得しました。';
file_get_contentsで「 Hello, !」を取得しました。

このように、出力時に、$name変数が受け渡されていませんよね。

PHPのincludeやrequireは、呼び出し元の変数や関数を利用できることがメリットの1つです。


ob_startは、include、requireの内容を変数に格納し、加工したり、任意のタイミングで表示させたい時に便利なので覚えておきましょう。

以上、include、requireの出力を変数として取得する方法、でした。

コメント

タイトルとURLをコピーしました