ob_get_flush()
(PHP 4 >= 4.3.0, PHP 5, PHP 7)
刷出(送出)缓冲区内容,以字符串形式返回内容,并关闭输出缓冲区。
说明
ob_get_flush(void): string
ob_get_flush()刷出(送出)缓冲区内容,以字符串形式返回内容,并关闭输出缓冲区。
Note:这个函数与ob_end_flush()相似,不同的是本函数还会以字符串形式返回缓冲区内容。
返回值
返回输出缓冲区的内容;或者是,如果没有起作用的输出缓冲区,返回FALSE。
范例
Example #1ob_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
(
)
参见
ob_end_clean()清空(擦除)缓冲区并关闭输出缓冲ob_end_flush()冲刷出(送出)输出缓冲区内容并关闭缓冲ob_list_handlers()列出所有使用中的输出处理程序。
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
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(); ?>
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(); ?>
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
