2012-06-27 16 views
7

HTMLマークアップを含むドキュメントファイルがあります。私はファイル全体の内容をPHP変数に代入したいと思います。 PHPの変数にファイルの内容を割り当てる方法

私はこのコード行を持っている:

$body = include('email_template.php');

私が行うとvar_dump() I取得string(1) "'"

それが変数にファイルの内容を割り当てることは可能ですか?

[注:メールメッセージのボディセグメントをメーラースクリプトから分離する必要があります。テンプレートのように、ユーザーはHTMLマークアップを変更するだけで、私のメーラースクリプトに関係しています。だから私は全体のボディーセグメントとしてファイルを含めていますmail($to, $subject, $body, $headers, $return_path);

ありがとう。

あなたが file_get_contents()を使用する必要があります
+0

は、それは含まれています、PHPの操作は何ですか、それとも単なるテキストですか? – lonesomeday

+0

はい@lonesomeday ... Qで言及しなかったことは、私のemail_template.phpファイルに埋め込まれたPHPが含まれていることです。だから、私はそれをfile_get_contents()よりもむしろincludeする必要があると思った。それは本当ですか?get_file-contents()はPHPとして解析しますか? –

答えて

19

実行する必要のあるPHPコードがある場合は、実際にincludeを使用する必要があります。ただし、includeはファイルからの出力を返しません。ブラウザに送信されます。出力バッファリングと呼ばれるPHP機能を使用する必要があります。これは、スクリプトによって送信されたすべての出力を取得します。このデータにアクセスして使用できます。

ob_start();      // start capturing output 
include('email_template.php'); // execute the file 
$content = ob_get_contents(); // get the contents from the buffer 
ob_end_clean();     // stop buffering and discard contents 
+1

を投稿していただきありがとうございます。 "狂気の方法" @lonesomedayを試してみます... –

+0

'ob_get_clean()'と 'ob_end_flush()'の違いは何ですか?私の場合、どちらを使うのが最適ですか? –

+0

@ Dr.DOT 'ob_get_clean'は内容を返します。 'ob_end_flush'はバッファリングを停止し、出力をブラウザに送り、ブール値を返します。 'ob_end_flush'はあなたがここで望むものではありません。 – lonesomeday

10

$body1 = file_get_contents('email_template.php'); 

includeは、以下を含むと、現在のファイルにemail_template.phpを実行し、$body1include()の戻り値を格納しています。

ファイルの内部でPHPコードを実行する必要がある場合は、output controlを利用することができます:

ob_start(); 
include 'email_template.php'; 
$body1 = ob_get_clean(); 
+0

ありがとう@TimCooper。私がQで言及しなかった何かは私のemail_template.phpファイルが埋め込まれたPHPを含んでいることです。だから、私はそれをfile_get_contents()よりもむしろincludeする必要があると思った。それは本当ですか?get_file-contents()はPHPとして解析しますか? –

+0

@ Dr.DOT:私の答えの追加情報を参照してください。 –

2

file_get_contents()

$file = file_get_contents('email_template.php'); 

それとも、あなたは非常識している場合:

ob_start(); 
include('email_template.php'); 
$file = ob_end_flush(); 
1

他の人が投稿していると、そのファイルが」doesnの場合file_get_contentsを使用いかなる方法でも処刑される必要があります。

また、return文でreturnを出力することもできます。

あなたのインクルードが処理を行い、echo [ed:またはPHP parsing modeを抜ける]ステートメントで出力する場合、出力をバッファすることもできます。

ob_start(); 
include('email_template.php'); 
$body1 = ob_get_clean(); 

TimCooperが私を倒しました。 :P

+0

私はあなたに@EPBをupvoted - –

0

はい、簡単に操作できます。

あなたは変数の場所にファイルには、この

require_once ‘/myfile.php'; 
if(isset($responseBody)) { 
    echo $responseBody; 
    unset($responseBody); 
}  

を使用するファイルでは、あなたが/myfile.php場所を呼び出しているファイルで、この

$responseBody = 'Hello world, I am a genius'; 

おかげ ダニエル

+0

技術的には、ファイルをrequire_onceする前に変数名を定義し、必要に応じてスクリプトの他の部分を上書きしないように変数を設定したり、変数。 –

関連する問題