- ベストアンサー
PHPのhtml部分を別に参照する方法
- PHPのhtml部分を別に参照する方法について教えてください。
- 質問者はPHPのコード内にある特定の部分を別のファイルに分けて参照したいと考えています。
- 具体的には、PHPのコード内のaとbの部分を別ファイルに保存して関数を使って参照したいとしています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
まず echo <<< EOT; ですが、末尾に ; があるとエラーになるのでは ないかと思いますが、大丈夫でしょうか? そして require だと、その位置にファイルの内容が差し込まれて、 PHPのコードとして処理されて、そこで出力が始まってしまいます。 また require は 成功すると 1 を返します。 ファイルの内容を返すわけではないので、 $a や $b には期待する内容が入っていません。 結果、次のような出力になってしまうかと思います。 ------------------------------------------------ a.htmlの内容 b.htmlの内容 1 $outstr の内容 1 ------------------------------------------------ a.html、b.html の内容がHTMLのみで、PHPのコードが含まれてなければ、 file_get_contents でいったん変数に格納すればよいかと思います。 ------------------------------------------------ $a=file_get_contents('a.html'); $b=file_get_contents('b.html'); echo <<<EOT {$a} {$outstr} {$b} EOT; ------------------------------------------------
その他の回答 (1)
- BellBell
- ベストアンサー率54% (327/598)
$a=require 'a.html'; $b=require 'b.html'; echo <<< EOT; {$a} {$outstr} {$b} EOT; 上記は require 'a.html'; echo $outstr; require 'b.html'; と書きなおせば、OKですね。 requireを使うとPHPパーサーを通す事になって、リソースの無駄遣いという事であれば下のように書いてもいいです。 readfile('a.html'); echo $outstr; readfile('b.html'); あくまで、一旦変数に格納したいというのであれば、file_get_contentsを使います。 $a=file_get_contents('a.html'); $b=file_get_contents('b.html'); echo $a, $outstr, $b; ま、そういう事をしたいときは、Smartyなどのテンプレートシステムを使う方が便利です。
お礼
ご回答ありがとうございます。 3通りも書き方があるとは知りませんでした。 >Smarty 検討してみます。ありがとうございました。
お礼
ご回答ありがとうございます。 >a.html、b.html の内容がHTMLのみで、PHPのコードが含まれてなければ、 >file_get_contents でいったん変数に格納すればよいかと思います。 なるほどです。こういう場合はrequireではなくfile_get_contentsを使えばよかったのですね。 回答1の人にご指摘いただいた点と併せて改善した結果、無事にできました。 本当にありがとうございました。 >require は 成功すると 1 を返します。 これは知りませんでした。stringを返すのではないのですね。