ob_start
(PHP 4, PHP 5, PHP 7, PHP 8)
ob_start — 打开输出控制缓冲
说明
$callback = null, int $chunk_size = 0, int $flags = PHP_OUTPUT_HANDLER_STDFLAGS): bool此函数将打开输出缓冲。当输出缓冲激活后,脚本将不会输出内容,相反需要输出的内容被存储在内部缓冲区中。参阅什么输出会被缓冲?以了解哪些输出受到影响。
输出缓冲区是可堆叠的,也就是说,当一个缓冲区处于活动状态时也可以调用 ob_start()。如果有多重输出缓冲区是活跃的,输出内容会一直按嵌套的顺序依次过滤。参阅嵌套输出缓冲区获取更多详情。
有关输出缓冲区的详细信息,请参阅用户级输出缓冲区
参数
callback-
可以指定可选的
callbackcallable。也可以通过传递null来绕过它。当冲刷(发送)、清理输出缓冲区或在脚本末尾冲刷输出缓冲区时,将调用
callback。callback的签名如下:buffer- 输出缓冲区中的内容。
phase-
PHP_OUTPUT_HANDLER_*常量。PHP_OUTPUT_HANDLER_*常量的位掩码。有关更多详细信息,请参阅传递给输出处理程序的 flag。
如果
callback返回false,则返回缓冲区的内容。有关更多详细信息,请参阅 输出处理程序的返回值。警告从输出处理程序中调用以下任何函数都将导致 fatal 错误 ob_clean()、ob_end_clean()、ob_end_flush()、ob_flush()、ob_get_clean()、ob_get_flush()、ob_start()。
chunk_size-
如果传递了可选参数 chunk_size,则在任何导致缓冲区长度等于或大于
chunk_size的代码块的输出之后,都会冲刷缓冲区。默认值0表示缓冲所有输出,直到缓冲区关闭。更多详细信息,请参阅缓冲区大小。 flags-
flags参数是位掩码,用于控制可以在输出缓冲区上执行的操作。默认是允许清理、冲刷和移除输出缓冲区,可以通过缓冲区控制 flag手动设置。参阅缓冲区中允许的操作获取更多详细信息。每个标志都控制着对一组功能的访问,详细介绍如下:
常量 函数 PHP_OUTPUT_HANDLER_CLEANABLEob_clean() PHP_OUTPUT_HANDLER_FLUSHABLEob_flush() PHP_OUTPUT_HANDLER_REMOVABLEob_end_clean()、ob_end_flush()、ob_get_clean()、ob_get_flush() 注意: 在 PHP 8.4.0 之前,flags 参数还可以设置 输出处理程序状态标志。
示例
示例 #1 用户自定义回调函数的示例
<?php
function callback($buffer)
{
// replace all the apples with oranges
return (str_replace("apples", "oranges", $buffer));
}
ob_start("callback");
?>
<html>
<body>
<p>It's like comparing apples to oranges.</p>
</body>
</html>
<?php
ob_end_flush();
?>以上示例会输出:
<html> <body> <p>It's like comparing oranges to oranges.</p> </body> </html>
示例 #2 创建不可擦除的输出缓冲区
<?php
ob_start(null, 0, PHP_OUTPUT_HANDLER_STDFLAGS ^ PHP_OUTPUT_HANDLER_REMOVABLE);
?>参见
- ob_get_contents() - 返回输出缓冲区的内容
- ob_end_clean() - 清空(擦除)活动缓冲区的内容并关闭它
- ob_end_flush() - 冲刷(发送)活动输出处理程序的返回值,并关闭活动输出缓冲区
- ob_implicit_flush() - 打开/关闭绝对刷送
- ob_gzhandler() - ob_start 回调函数压缩输出缓冲区
- ob_iconv_handler() - 以输出缓冲处理程序转换字符编码
- mb_output_handler() - 在输出缓冲中转换字符编码的回调函数
- ob_tidyhandler() - ob_start callback function to repair the buffer