ob_get_flush

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

ob_get_flush刷新(发送)活动输出处理程序的返回值,返回活动输出缓冲区的内容并将其关闭

描述

ob_get_flush(): string|false

此函数调用输出处理程序(使用 PHP_OUTPUT_HANDLER_FINAL 标记),刷新(发送)其返回值,返回活动输出缓冲区的内容并关闭活动输出缓冲区。

ob_get_flush() 在没有使用 PHP_OUTPUT_HANDLER_REMOVABLE 标记启动的活动输出缓冲区的情况下将失败。

ob_get_flush() 即使活动输出缓冲区是在没有 PHP_OUTPUT_HANDLER_FLUSHABLE 标记的情况下启动的,也将刷新(发送)输出处理程序的返回值。

参数

此函数没有参数。

返回值

成功时返回活动输出缓冲区的内容,失败时返回 false

错误/异常

如果函数失败,它会生成一个 E_NOTICE

示例

示例 #1 ob_get_flush() 示例

<?php
// 使用 output_buffering=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
(
)

参见

添加笔记

用户贡献笔记 4 notes

34
info at pcdoctor dot fr
16 年前
你好,
这只是为了添加一个我一开始没有理解的行为。

ob_get_flush 实际上将缓冲区的内容作为文本返回,但它也会将缓冲区发送回浏览器,以便在用户屏幕上显示。

如果您不想将缓冲区发送给用户,请使用 ob_get_clean
-3
taras dot dot dot di at gmail dot com
16 年前
我不知道这到底是如何工作的,但如果您调用此函数,PHP 的行为就好像标题已发送一样(即使输出已转到字符串)。

这意味着您不能调用此函数,然后调用 setcookie 例如。

这是通过反复试验验证的
-6
zubin@byron
18 年前
我发现此函数对存储输出而不是显示输出很有用。例如,我想使用一个旧的函数,该函数会回显输出,但我希望它在变量中,而不是立即输出。以下是操作方法

<?php
// 开始生成 html
$html = '<html><head>'; // 等等
// 开始输出缓冲
ob_start();
// 调用立即输出的函数
print_menu();
// 将此附加到 $html
$html .= ob_get_flush();
// 清空输出缓冲区
ob_clean();
?>
-5
zubin@byron
18 年前
对上一篇文章的更正:ob_get_clean() 更好,即

<?php
// 开始生成 html
$html = '<html><head>'; // 等等
// 开始输出缓冲
ob_start();
// 调用立即输出的函数
print_menu();
// 将此附加到 $html 并清空缓冲区
$html .= ob_get_clean();
?>
To Top