• ベストアンサー

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

  • インクルードファイル内にPHPコードを挿入してecho表示

    処理が異なる2つのPHPファイルを一つのテンプレートファイルから index.phpファイルへ表示させたいのですが、テンプレートファイル内に css_echo.phpをインクルードさせたコードを書くとそのままソース上に表示されてしまいます。 どのような方法をとればいいかアドバイス下さい。 ■条件としては、 ・css.php/css_echo.phpの処理ファイルはそれぞれ別ファイルとしたい ・index.phpファイルは <html> <head> <?php require_once('./css_echo.php');//ブラウザを判別してCSSファイルを出力 ?> </head> <body> <?php $temp = "./temp.html"; //このページのテンプレートファイル名パス require_once('./echo.php'); ?> </body> </html> には書かない方法で対応したいです。 ファイルは以下です。 ---------------------------------------------------------------------- テンプレートファイル(temp.html) <html> <head> <!--問題はここです。 --> <?php require_once('./css_echo.php');//ブラウザを判別してCSSファイルを出力 ?> </head> <body> サンプル表示{この中はブラウザ判別して表示・非表示にする} </body> </html> 処理PHPファイル(echo.php) <?php $htm = file_get_contents($temp); echo preg_replace('/[{}]/', '', $htm);// {}内を削除して表示 ?> ブラウザ判別用ファイル(css_echo.php) <?php //実際にはこの前にブラウザ判別し処理コード(省略) echo "<link rel=\"stylesheet\" href=\"$dir$pc\" type=\"text/css\">\n"; ?> メイン表示用PHPファイル(index.php) <?php $temp = "./temp.html"; //このページのテンプレートファイル名パス require_once('./echo.php'); ?> ------------------------------------------------------------------------

    • 締切済み
    • PHP
  • fputsで書き込みを行う際に、includeを使用したいです。

    phpの初心者です。 どうぞよろしくお願いします。 ユーザーがクリックしただけでページが生成されていくといったような サイトを現在作成しています。 以下、構造です。 index.php regist.php footer.inc page(dir)---a(dir)-------index.php       └b(dir)-------index.php       └c(dir)-------index.php 動作としては、index.php(TOP階層)でリンクをクリックするとregist.phpにジャンプし、 regist.phpのプログラムの中で、page(dir)の中にa,b,c,d,e…とディレクトリが 自動生成されて、中にindex.phpファイルを生成します。 regist.phpの最後でheader("Location:")を使用し、生成されたページに自動的にジャンプします。 生成されたページのフッターに今までクリックされたリンクという紹介のようなものがあります。 そこの記述が regist.php内の記述/////////////////// ob_start(); include("footer.inc"); $footer = ob_get_contents(); ob_end_clean(); fputs($fp, "$footer"); footer.inc内の記述/////////////////// <?php $arr = scandir('./page/', 1); foreach($arr as $key => $dir){ //リンク名を日本語に変換 $dir = str_replace("http://".$domein."/page", "http://".$domein."/page/", "$dir"); print "<a href=\"http://".$domein."/page/".$dir."/\">$dir_url</a> \n"; } ?> 上記のようなプログラムですと、a,b,c,d…x,y,zと順番にディレクトリとページが生成されていった場合に aの中のindex.phpではリンクなし。 bの中のindex.phpではaへのリンク。 cの中のindex.phpではaとbへのリンク。 dの中のindex.phpではaとbとcへのリンク。 eの中のindex.phpではaとbとcとdへのリンク。 一つずつリンクが増えていくようになってしまってます。 これを、自動生成されたページでは、常にクリックされたすべてのリンクが出るようなものにしたいというのが希望です。 aの中のindex.phpではaとbとcとdへのリンク。 bの中のindex.phpではaとbとcとdへのリンク。 cの中のindex.phpではaとbとcとdへのリンク。 dの中のindex.phpではaとbとcとdへのリンク。 eの中のindex.phpではaとbとcとdへのリンク。 なのでregist.phpの記述を… 修正後:regist.php内の記述/////////////////// fputs($fp, "<?php include(\"../../footer.inc\"); ?>"); こちらですと、読み込み形式になり常に新しい情報が入るかな?と思い試したのですが思うように動きません。 修正前:regist.php内の記述/////////////////// ob_start(); include("footer.inc"); $footer = ob_get_contents(); ob_end_clean(); fputs($fp, "$footer"); 上記ですと、テキストを書き込む形になりますので、常に新しい情報ではありません…。 分かる方、ご回答頂けますと幸いです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • phpのincludeについて

    お世話になります。 Apache/2.2.3 PHP5.1.6 のレンタルサーバを利用しています。 httpdocs   |___lib   |  |___test.php   |___index.php という構造にしています。 -----test.php-------- <?php $a = 'sample'; ?> --------------------- -----index.php------- <?php include_once 'lib/test.php'; echo $a; ?> --------------------- 上記の場合、index.phpには 「sample」と表示されます。 -----index.php------- <?php include_once 'http://example.com/lib/test.php'; echo $a; ?> --------------------- 上記の場合、なぜか表示されません。 そこで「http://~~」はincludeできないのかなと思ったのですが -----test.php-------- <?php $a = 'sample'; echo $a; ?> --------------------- -----index.php------- <?php include_once 'http://example.com/lib/test.php'; ?> --------------------- とすると、なぜか「sample」と表示されました。 この結果から、includeはできているみたいです。 なんとか -----test.php-------- <?php $a = 'sample'; ?> --------------------- -----index.php------- <?php include_once 'http://example.com/lib/test.php'; echo $a; ?> --------------------- で「sample」と表示させたくて試行錯誤してみたのですが どうしても解決できません。 お力添えのほどお願いできればと思います。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • セッション部分のインクルード

    お世話になっております。 PHPを使ったHTMLページを作成しているのですが、 セッション部分がうまく動きません。 index.phpページの一番上部に、 <?php include "http://www.○○○.com/lib/include/base.php"; ?> というように記述し、 base.phpには、 <?php session_start(); if(!isset($_SESSION["ses_ref"])){ $_SESSION["ses_ref"]= $_SERVER["HTTP_REFERER"]; } と記述しております。 セッション部分をインクルードせずに直接index.phpに記述した場合は、きちんと動くのですが、インクルードすると動きません。 (変数を取得できません。) セッション部分をインクルードすることはできないのでしょうか。 ご教授くださると非常にありがたいです。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • 同一phpファイルからのinclude

    ってできるんですか? 例えばindex.phpの16行目辺りの文章をDIVで囲ってtitleつけて、それを同一index.phpファイルの100行目辺りにphp includeでまた表示…外部ファイルにして両方にincludeすればいいんですが、できるのかなぁって。 よろしくお願いします。

    • 締切済み
    • PHP
  • ホームページの文字の大きさについて

    ホームページを作ろうと思い、HTMLを勉強始めたのですがいきなりつまずいてしまいました。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>インデックス</title> </head> <body> <h1>ホームページ<h1/> <h2>ようこそ<br>トップです。</h2> <p>はじめて作成したページ</p> </body> </html> 試しに上のように組んでみたのですが 一行目の「ホームページ」と最後の「はじめて作成したページ」の文字が同じ大きさになってしまいました。 最後の行は見出しタグを付けてもいませんし大きくなる理由がわかりません。 試行錯誤した結果、一行目のサイズを変えると(たとえばh1からh2に)最後の行も同じようにサイズが変わることがわかりました。 なぜこの2つの行の文字の大きさが一致するようになったのでしょうか? 初心者過ぎてばかばかしい質問かもしれませんがよろしくお願いします。

    • ベストアンサー
    • HTML
  • 初心者です。includeでエラーがでます。

    PHP初心者です。 宜しくお願い致します。 <head> <?php include("../php/shop.php"); ?><?php include("../php/menu.php"); ?> <TITLE><? echo $shop[0]; ?> <? echo $page[1]; ?></TITLE> 上記の様に記述して別のファイルのテキストを読み込ませたいのですが、 Warning: Cannot modify header information - headers already sent by (output started at /home/my-styleone-com/public_html/shop/test/pc/index.php:10) in /home/my-styleone-com/public_html/shop/test/php/shop.php on line 2 Warning: Cannot modify header information - headers already sent by (output started at /home/my-styleone-com/public_html/shop/test/pc/index.php:10) in /home/my-styleone-com/public_html/shop/test/php/menu.php on line 2 のようなエラー表示がされます。 文字は問題なく読み込んでいるのですが・・・ ファーストサーバーでは上記のようなエラー表示はでないのですが、 ワダックスといるサーバーにアップすると上記のようなエラー表示がでます。 解決方法があれば教えてください。 お願いします。

    • 締切済み
    • PHP
  • HTML #include file について

    初心者ですみません><  使用OS:windowsXP Home Edition  動作環境:自分のPC 1台 HTML文に下記のテスト文を作成したのですが、#includeの"header.inc" ファイルが読み込めないのです。 html文自体は c:\test\test.html に保存しています。 includeファイルは c:\test\INC\header.inc としています。   *** test.html *********************************  <html> <head>   <#include file="./INC/header.inc"> </head> <body> <h1>test</h> </body> </html> *******************************************  *** header.inc **************************** <title>Title_TEST</title> ******************************************* 簡単なテスト文なのですが、header.inc の部分が読み込めないので困っています。どこかに必要な設定があるのでしょうか? すみませんがおしえてください。

  • インクルードしているheadの中に記述するには?

    htmlのヘッダーを関数化して全画面でインクルードしています。 ある画面でだけ、ちょっとしたjavascriptの記述をヘッダー内に記述したいのですが、どうしたらいいでしょうか? 現状ではヘッダー関数の中でJSを外部ファイルで読み込んでいますが、JSのスクリプトでwindow.onloadなどを使う場合、すべてのページに該当してしまいよろしくありません。 うまい方法がありましたらご教授宜しくお願いします。 またheadの終わりからbodyの始まる間にscriptを書いても問題はないのでしょうか? 動作的にはエラーは通知されませんでしたが。 原則的にはheadの中だと思うので。 <html> <head> </head> ●ここにjavascriptを記述 <body> ・・・ 【環境】 php5

    • 締切済み
    • PHP
  • Movable Type のテンプレート内へPHPの記述するとエラーがでてしまします

    Movable Type(以下MT)をカスタマイズしています。 MTをPHP化してテンプレートにPHPを記述しているのですが、アーカイブテンプレートのブログ記事テンプレートにあるPHPの記述をすると、エラーが出てしまうのです。 PHPの記述とエラーの内容は以下の通りです。 ■PHPの記述 <?php <MTSetVar name="myName" value="北村"> <?php echo('<$MTGetVar name="myName"$>'); ?> ■エラーの内容 Smarty error: [in evaluated template line 9]: syntax error: unrecognized tag '/php' (Smarty_Compiler.class.php, line 580) 上記と同じ記述をアーカイブテンプレートのブログ記事リストテンプレートに記述した場合は、エラーは出ず、ちゃんと「北村」という文字が表示されるのですが、なぜかブログ記事テンプレートに記述すると上記のエラーが出てしまいます。 なお、制作環境は以下の通りです。 Movable Typeのバージョン:4.1 サーバーのPHPのバージョン:5.2 かれこれ半日試行錯誤しております。 原因に心あたりのあるかた、是非ご教授お願いいたします。さい。