- ベストアンサー
includeでさらに文字置換え
こんにちは。 率直に質問しますが、 まず、 index.php temp.inc というファイルを作って、 <html> ・ ・ </head> までを、テンプレート化してtemp.incで保存しました。 そこでページごとにタイトルを変えたいのですが、 何かいい方法はないですか? 僕が思うには、 temp.inc内のtitleを $title のようにおいて、 index.phpの文頭辺りに、$title= "タイトル" のような記述をすれば良いのかと考えましたが、 何度も試行錯誤を繰り返しましたが無理でした^ どうか力を貸して下さい。 それでは、よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
<?php echo '<?xml version="1.0" encoding="Shift_JIS" ?>'."\n"; $title = "タイトル"; ?> <?php include("temp.inc");?> これで、いかがでしょう?? 「$title = "タイトル";」がPHPの記述の中にありません。
その他の回答 (3)
- moon_night
- ベストアンサー率32% (598/1831)
PHP構文の中に入れれば正常に表示されます。 以下サンプルスクリプト(動作済み) --- inc.php --- <?PHP $title = "タイトル"; ?> <?include("inc.inc");?> --- inc.inc --- <? print <<<EOF <html> <head><title>$title</title></head> <body> ・・・・ ・・・・ </body> </html> EOF; ?> 以上。
- campanella_77
- ベストアンサー率66% (35/53)
こんにちは。 私の場合は、外部インクルードファイルはほとんど自分でつくった関数集かクラス集です。 おっしゃられているものは、単にHTMLファイルをインクルードしているだけなんじゃないかと判断しましたがいかがでしょうか。 で、外部ファイルをPHPプログラムの一部としてインクルードさせたい場合は、PHPの書式に沿って記述してあげなくてはなりません。以下は外部ファイル「temp.inc」の中身とします。 <? print <<<EOF <html> <head><title>${title}</titl></head> <body> ・・・・ ・・・・ </body> </html> EOF; ?> で、今度は呼び出す側「index.php」の記述です。 $title = "タイトル"; include "temp.inc"; これで大丈夫だと思いますが。 動的に変更したい部分だけをPHPとして認識させたいのであれば、 <html> <head><title><?=$title?></title></head> <body> のように変数を「<?=」と「?>」で囲む方法もあります。
補足
アドバイスありがとうございます。 試してみたところ $title = "タイトル"; というのがそのまま表示されてしまいました。 その時のindex.phpの記述は <?php echo '<?xml version="1.0" encoding="Shift_JIS" ?>'."\n"; ?> $title = "タイトル"; <?include("temp.inc");?> としました。
- BENGAL
- ベストアンサー率73% (22/30)
どう動かなかったのかお書きになってないので、わかりませんが。 『ファイルが読み込まれるときには、読み込まれるファイルの先頭で PHPモードを抜けてHTMLモードになり、最後に再びPHPモードに戻ります。 このため、読み込むファイル中のPHPコードとして実行する必要がある コードは、 有効なPHPの開始タグおよび終了タグで括る必要があります。』 と、マニュアルにもあるように、temp.incがPHPとして動作しない環境であるのであれば、 それは、PHPモードを抜けていますので、変数をお書きになっても動作しません。 ですので、temp.inc内の変数の部分を<?php print $title; ?>とお書きになると良いと思います。 上記の表記をよりスマートにしますと、<?= $title ?>となります。 参考になれば幸いです。
お礼
できました! ありがとうございます!!