©
本文档使用 PHP中文网手册 发布
(PHP 4 >= 4.3.0, PHP 5)
ob_get_flush — 刷出(送出)缓冲区内容,以字符串形式返回内容,并关闭输出缓冲区。
ob_get_flush() 刷出(送出)缓冲区内容,以字符串形式返回内容,并关闭输出缓冲区。
Note: 这个函数与 ob_end_flush() 相似,不同的是本函数还会以字符串形式返回缓冲区内容。
返回输出缓冲区的内容;或者是,如果没有起作用的输出缓冲区,返回 FALSE
。
Example #1 ob_get_flush() example
<?php
//using output_buffering=On
print_r ( ob_list_handlers ());
//save buffer in a file
$buffer = ob_get_flush ();
file_put_contents ( 'buffer.txt' , $buffer );
print_r ( ob_list_handlers ());
?>
以上例程会输出:
Array ( [0] => default output handler ) Array ( )
[#1] taras dot dot dot di at gmail dot com [2008-08-14 07:53:47]
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
[#2] info at pcdoctor dot fr [2008-06-08 08:35:47]
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
[#3] zubin@byron [2005-09-07 19:28:49]
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();
?>
[#4] zubin@byron [2005-08-31 13:21:26]
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();
?>