I don't know how exactly this works, but if you call this function, PHP would behave as if headers have been sent (even though the output has gone to a string).
This means that you can't call this function, and then call setcookie for example.
This was verified by trial and error
ob_get_flush
(PHP 4 >= 4.3.0, PHP 5)
ob_get_flush — 出力バッファをフラッシュし、その内容を文字列として返した後で出力バッファリングを終了する
説明
string ob_get_flush
( void
)
ob_get_flush() は、 出力バッファをフラッシュしてその内容を文字列として返した後、 出力バッファリングを終了します。
注意: この関数は ob_end_flush() と似ていますが、 この関数はバッファの内容を文字列として返します。
返り値
出力バッファを返します。バッファリングが開始されていない場合は FALSE を返します。
例
例1 ob_get_flush() の例
<?php
// 出力バッファリングを On にします
print_r(ob_list_handlers());
// バッファをファイルに保存します
$buffer = ob_get_flush();
file_put_contents('buffer.txt', $buffer);
print_r(ob_list_handlers());
?>
上の例の出力は以下となります。
Array ( [0] => default output handler ) Array ( )
ob_get_flush
taras dot dot dot di at gmail dot com
14-Aug-2008 11:53
14-Aug-2008 11:53
info at pcdoctor dot fr
09-Jun-2008 12:35
09-Jun-2008 12:35
Hi,
this is just to add a behavior that I haven't understud at first place.
ob_get_flush actually returns the content of the buffer as a text but also it sends the buffer back to the browser so that it's displayed on user screen.
Use ob_get_clean if you do not want the buffer to be send to the user
zubin@byron
08-Sep-2005 11:28
08-Sep-2005 11:28
Correction to previous post: ob_get_clean() is better, ie:
<?php
// start generating html
$html = '<html><head>'; // etc
// start output buffering
ob_start();
// call function which outputs immediately
print_menu();
// append this to $html and empty buffer
$html .= ob_get_clean();
?>
zubin@byron
01-Sep-2005 05:21
01-Sep-2005 05:21
I found this function is useful for storing output instead of displaying it. For example, I wanted to use an old function which echoed the ouput but I wanted it in a variable, not outputted immediately. Here's how:
<?php
// start generating html
$html = '<html><head>'; // etc
// start output buffering
ob_start();
// call function which outputs immediately
print_menu();
// append this to $html
$html .= ob_get_flush();
// empty output buffer
ob_clean();
?>
