ob_start

(PHP 4, PHP 5, PHP 7, PHP 8)

ob_start打开输出控制缓冲

说明

ob_start(?callable$callback = null, int$chunk_size = 0, int$flags = PHP_OUTPUT_HANDLER_STDFLAGS): bool

此函数将打开输出缓冲。当输出缓冲激活后,脚本将不会输出内容,相反需要输出的内容被存储在内部缓冲区中。参阅缓冲什么输出?以了解哪些输出受到影响。

输出缓冲区是可堆叠的,也就是说,当一个缓冲区处于活动状态时也可以调用 ob_start()。如果有多重输出缓冲区是活跃的,输出内容会一直按嵌套的顺序依次过滤。参阅嵌套输出缓冲区获取更多详情。

有关输出缓冲区的详细信息,请参阅用户级别输出缓冲区

参数

callback

可以指定可选的 callbackcallable。也可以通过传递 null 来绕过它。

当冲刷(发送)、清理输出缓冲区或在脚本末尾冲刷输出缓冲区时,将调用 callback

callback 的签名如下:

handler(string$buffer, int$phase = ?): string
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()

有关 callback(输出处理程序)的更多详细信息,请参阅输出处理程序使用输出处理程序

chunk_size

如果传递了可选参数 chunk_size,则在任何导致缓冲区长度等于或大于 chunk_size 的代码块的输出之后,都会冲刷缓冲区。默认值 0 表示缓冲所有输出,直到缓冲区关闭。更多详细信息,请参阅缓冲区大小

flags

flags 参数是位掩码,用于控制可以在输出缓冲区上执行的操作。默认是允许清理、冲刷和移除输出缓冲区,可以通过缓冲区控制 flag手动设置。参阅缓冲区中允许的操作获取更多详细信息。

每个标志都控制着对一组功能的访问,详细介绍如下:

常量函数
PHP_OUTPUT_HANDLER_CLEANABLEob_clean()
PHP_OUTPUT_HANDLER_FLUSHABLEob_end_flush()
PHP_OUTPUT_HANDLER_REMOVABLEob_end_clean()ob_end_flush()ob_get_clean()ob_get_flush()

返回值

成功时返回 true, 或者在失败时返回 false

示例

示例 #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);

?>

参见

To Top