ob_end_clean
(PHP 4, PHP 5, PHP 7, PHP 8)
ob_end_clean — 清空(擦除)活动缓冲区的内容并关闭它
说明
ob_end_clean(): bool
该函数调用输出处理程序(使用 PHP_OUTPUT_HANDLER_CLEAN
和 PHP_OUTPUT_HANDLER_FINAL
flag),丢弃它的返回值,丢弃活动输出缓冲区的内容并关闭活动输出缓冲区。
如果没有以 PHP_OUTPUT_HANDLER_REMOVABLE
flag 启动的活动输出缓冲区,ob_end_clean() 将失败。
ob_end_clean() 将丢弃活动输出缓冲区的内容,即使是在没有 PHP_OUTPUT_HANDLER_CLEANABLE
flag 的情况下启动的。
参数
此函数没有参数。
错误/异常
如果函数失败了,将生成 E_NOTICE
异常。
示例
下面的示例展示了去除活动输出缓冲内容的简单方法:
示例 #1 ob_end_clean() 示例
<?php
ob_start();
echo 'Text that won\'t get displayed.';
ob_end_clean();
?>
参见
- ob_start() - 打开输出控制缓冲
- ob_get_contents() - 返回输出缓冲区的内容
- ob_clean() - 清空(擦掉)活动输出缓冲区的内容
- ob_get_clean() - 获取活动缓冲区的内容并将其关闭
- ob_end_flush() - 冲刷(发送)活动输出处理程序的返回值,并关闭活动输出缓冲区
+添加备注
用户贡献的备注 2 notes
Sam Yong - hellclanner at live dot com ¶
13 years ago
Take note that if you change zlib output compression setting in between ob_start and ob_end_clean or ob_end_flush, you will get an error: ob_end_flush() failed to delete buffer zlib output compression
Example:
<?php
ob_start();
$output = ob_get_contents();
ini_set('zlib.output_compression', '1');
ob_end_clean();
?>
ob_end_clean(); in this example will throw the error.
John Smith ¶
20 years ago
Note that if you started called ob_start with a callback, that callback will still be called even if you discard the OB with ob_end_clean.
Because there is no way of removing the callback from the OB once you've set it, the only way to stop the callback function from having any effect is to do something like:
<?php
$ignore_callback = false;
ob_start('my_callback');
...
if($need_to_abort) {
$ignore_callback = true;
ob_end_clean();
...
}
function my_callback(&$buffer) {
if($GLOBALS['ignore_callback']) {
return "";
}
...
}
?>
备份地址:http://www.lvesu.com/blog/php/function.ob-end-clean.php