• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:外部ファイル記述内容をヒアドキュメント上で実行)

外部ファイル記述内容をヒアドキュメント上で実行

このQ&Aのポイント
  • 外部のテキストファイルを読み込み、PHPスクリプトが記述されていたら実行する方法について解説します。
  • テキストファイルにはテストの文章やPHPコードを記述することができます。
  • PHPコードを実行する際には、file_get_contents()関数やexplode()関数を使用してテキストファイルの内容を取得し、適切に処理する必要があります。

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

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5253/13739)
回答No.1

セキュリティ上、外部ファイルの中のプログラムを実行するのはよくないので、  <?php echo (date("Y年m月d日")); ?> と書いておくのではなく  [[TODAY]] とか書いておいて置換処理するのが一般的かと思います。 一応 eval() と言うのがありますので実行可能ですが、PHPの開始タグ・終了タグは抜かなければいけないので、外部ファイルの記述を変える必要があります。

cnkozo
質問者

お礼

ありがとうございます。 evalが参考になりました。 下記の記述で思っていたのが、実現しました。 <?php $text = <<<EOM テスト,これはテストです。 <?php echo (date("Y年m月d日")); ?> テスト2,これはテストです2 EOM; $text = explode("\n", $text); $num0 = explode(',', $text[0]); $num1 = explode(',', $text[1]); $subject0 = $num0[0]; $subject1 = $num1[0]; $body0 = $num0[1]; $body1 = $num1[1]; echo eval("?>".<<<EOM <p>{$subject0}<br>{$body0}</p> <p>{$subject1}<br>{$body1}</p> EOM ); ?> 実現できたのでベストアンサーとさせて頂きます。

その他の回答 (2)

回答No.3

#1の御回答のように外部ファイルの信頼性がないと 怖いですし 読んだ後にキーを置換するほうが、見通しもよいとは思いますが、 PHPの出力をバッファリングして 変数に格納してしまうということは可能ではあります。 $text = file_get_contents("text.txt"); のかわりに ob_start(); include("text.txt"); $text = ob_get_contents(); ob_end_clean(); って感じです。

cnkozo
質問者

お礼

ありがとうございます。 とりあえず別の方法でできました。 信頼性は不安ですが、外部ファイルとはいえ、自分のアップロードしたファイルのみ読み込みで、不特定多数のファイルを読み込ませるわけではないです。 ご教示いただいたコードは今後の参考にさせて頂きます。

  • pringlez
  • ベストアンサー率36% (598/1630)
回答No.2

そんなコード、外部ファイル云々の前にこう書いたって動きませんよ。 <?php echo <<<EOD <p>テスト<br>これはテストです。 <?php echo (date("Y年m月d日")); ?></p> <p>テスト2<br>これはテストです2</p> EOD; ?> 本質的に何がしたいのかよくわかりませんが、「外部ファイルを読み込みそれを実行」でいいのならincludeするのが普通でしょう。 データを読んで取り込みたいのなら、データファイルに日付を出力すべきです。データファイルにPHPのコードを書くなんてありえないと思います。

関連するQ&A

専門家に質問してみよう