• ベストアンサー

includeでさらに文字置換え

こんにちは。 率直に質問しますが、 まず、 index.php temp.inc というファイルを作って、 <html> ・ ・ </head> までを、テンプレート化してtemp.incで保存しました。 そこでページごとにタイトルを変えたいのですが、 何かいい方法はないですか? 僕が思うには、 temp.inc内のtitleを $title のようにおいて、 index.phpの文頭辺りに、$title= "タイトル" のような記述をすれば良いのかと考えましたが、 何度も試行錯誤を繰り返しましたが無理でした^ どうか力を貸して下さい。 それでは、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • BENGAL
  • ベストアンサー率73% (22/30)
回答No.3

<?php echo '<?xml version="1.0" encoding="Shift_JIS" ?>'."\n"; $title = "タイトル"; ?> <?php include("temp.inc");?> これで、いかがでしょう?? 「$title = "タイトル";」がPHPの記述の中にありません。

noiji
質問者

お礼

できました! ありがとうございます!!

その他の回答 (3)

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.4

PHP構文の中に入れれば正常に表示されます。 以下サンプルスクリプト(動作済み) --- inc.php --- <?PHP $title = "タイトル"; ?> <?include("inc.inc");?> --- inc.inc --- <? print <<<EOF <html> <head><title>$title</title></head> <body> ・・・・ ・・・・ </body> </html> EOF; ?> 以上。

回答No.2

こんにちは。 私の場合は、外部インクルードファイルはほとんど自分でつくった関数集かクラス集です。 おっしゃられているものは、単に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> のように変数を「<?=」と「?>」で囲む方法もあります。

noiji
質問者

補足

アドバイスありがとうございます。 試してみたところ $title = "タイトル"; というのがそのまま表示されてしまいました。 その時のindex.phpの記述は <?php echo '<?xml version="1.0" encoding="Shift_JIS" ?>'."\n"; ?> $title = "タイトル"; <?include("temp.inc");?> としました。

  • BENGAL
  • ベストアンサー率73% (22/30)
回答No.1

どう動かなかったのかお書きになってないので、わかりませんが。 『ファイルが読み込まれるときには、読み込まれるファイルの先頭で PHPモードを抜けてHTMLモードになり、最後に再びPHPモードに戻ります。 このため、読み込むファイル中のPHPコードとして実行する必要がある コードは、 有効なPHPの開始タグおよび終了タグで括る必要があります。』 と、マニュアルにもあるように、temp.incがPHPとして動作しない環境であるのであれば、 それは、PHPモードを抜けていますので、変数をお書きになっても動作しません。 ですので、temp.inc内の変数の部分を<?php print $title; ?>とお書きになると良いと思います。 上記の表記をよりスマートにしますと、<?= $title ?>となります。 参考になれば幸いです。

関連するQ&A

専門家に質問してみよう