赤羽 (2010年10月12日 17:02) 流通システム部 / PHP
<html> <head> <title>PHPコードを含む外部HTML</title> </head> <body> 以下に外部HTMLからPHPの実行結果を出力します。<br /> <br /> <?php echo 'ここはPHPからの出力です。<br />'; ?> <br /> PHPから出力されていますか?<br /> </body> </html>
以下に外部HTMLからPHPの実行結果を出力します。 PHPから出力されていますか?
以下に外部HTMLからPHPの実行結果を出力します。 ここはPHPからの出力です。 PHPから出力されていますか?
【PHP】 PHPから外部PHPファイルを取込み出力する
赤羽 (2010年10月12日 17:02)
流通システム部 / PHP
流通システム部の赤羽です。
今回はPHPのお話をさせていただきます。
PHPでは外部ファイルを読み込み、
内容を出力させることが出来ます。
例えばHTMLのテンプレートファイルを読み込み、
テンプレートの中身を一部PHPの処理で置き換え、
結果をブラウザに表示させる、といった利用法があります。
ここで注意して頂きたいこととして、 PHPで外部ファイルを取込む方法は色々あるのですが、
取込方法によって出力が変わる場合もあります。
私が実際に経験したことを例として挙げます。
取込みを行ったファイルはHTMLファイルだったのですが、
中にPHPのコードが一部分記述されていました。
例:sample.html
最初はこのHTMLファイルを以下のように取込んでみました。
例:file_get.php
file_get_contents を使って、同じディレクトリのsample.htmlを取込んでいます。
このfile_get.php の実行結果は以下の通りです。
私の思いとしては、「ここはPHPからの出力です。」の部分が
出力されて欲しかったのですが、
結果を見てみると何も表示されていないです。
ソースを見てみたところ、
どうやらsample.htmlの中身がそのまま出力されており、
PHPコードが実行されていないようでした。
外部ファイル内のPHPコードを実行したい場合、次のような解決方法があります。
例:include.php
出力結果
「ここはPHPからの出力です。」が表示されているため、
取込んだファイル内のPHPコードが実行され、
思っていた通りの結果が得られていることが確認できます。
この方法のポイントとしては、
外部ファイルの実行結果をバッファに溜め、
内容を変数に入れるところです。
このようにすることで、
例えば、外部ファイル内のPHPコードが実行されたHTML中の
文字列を操作することが可能となります。
上記の例では、file_get_contents では、
外部ファイル内のPHPコードが実行されず、
ob_start した後、include でファイルを取込み、
ob_get_contents で変数にバッファの内容を入れた場合は、
外部ファイル内のPHPのコードが実行されていることが確認出来ます。
このような例はあまりないかもしれませんが、
これらの取込方法の違いを覚えておくと良いでしょう。