输出缓冲激活后,脚本将不会输出内容(除http标头外),相反需要输出的内容被存储在内部缓冲区中,这是PHP缓冲区函数的作用。
比如某个函数使用的echo
输出一段内容,而不是return
返回,但你不希望该函数将内容输出,这时候可以使用PHP缓冲区函数来解决此问题。
比如定义了一个函数hello()
如下:
<?php
function hello(){
echo 'hello,world!';
}
hello();
当直接调用该函数后会输出内容:hello,world!
,但是如果你不想让该函数内容直接输出,可使用下面的代码替代:
<?php
function hello(){
echo 'hello,world!';
}
//激活缓冲区函数
ob_start();
//调用hell函数
hello();
//清空缓冲区内容
ob_end_clean();
上面的代码先将内容放到缓冲区,然后没有对内容进行任何操作,最后将缓冲区内容清空了,因此不会有任何输出显示。
函数解释
ob_start()
:打开输出缓冲ob_get_contents()
:将缓冲区的内容复制到一个字符串变量中ob_end_flush()
:输出缓冲区内容ob_end_clean()
:清空缓冲区
更多说明可参考PHP官方文档:Output Control 函数