2011-12-14 8 views
5

ここにPHPのヘルプが必要です。含まれているコンテンツは「1」と表示されていますが、その内容は表示されている必要があります。ここでは、関数の短縮バージョンは次のとおりです。ob_start()内のinclude()の使用

public function content { 
    $website->content = 'Some content here. '; 
    ob_start(); 
    include('myfile.php'); 
    $file_content = ob_end_clean(); 
    $website->content .= $file_content; 
    $website->content .= ' Some more content here.'; 
    echo $website->content; 
} 

この出力は:

 
Some content here 
1 
Some more content here 

私は出力にそれを必要とする:

 
Some content here 
'Included file content here' 
Some more content here 

任意のアイデアは、私はこの問題を解決する方法は?

答えて

8

ob_end_clean()の代わりにob_get_clean()を試してみてください。

両方とも現在のバッファをクリアしますが、ob_end_clean()はブール値を返しますが、ob_get_clean()は現在のバッファの内容を返します。

+0

ありがとうございました。 –

2

ob_get_clean()ではなく、ob_end_clean()を使用してください。前者は出力バッファの文字列を返して空にしますが、後者は空にしてboolを返します。

2

代わりのob_end_cleanを使用して、他の開発者が本当に何であるに関する混乱したときに、私は時間を持っていたので、私はob_get_cleanに投票ていないよ理由は以下の

ob_start(); 

include('myfile.php'); 

$file_content = ob_get_contents(); 

ob_end_clean(); 

に似たものに、既存のコードを変更関数名は、出力バッファリングが呼び出された後に終了するとは本当に述べていません。

私はこの機能がさらなるバグを起こしやすいと考えているため、ob_start/ob_end_cleanを使用する方が理解しやすく、将来のコードメンテナンスのためにはさらに優れています。

1行の余分な行の間にトレードオフがありますが、理解しやすいコードはそれだけの価値があります。

関連する問題