———-关于php开启缓冲函数系列函数
ob_start() — 开启输出缓冲区
描述:此函数将打开输出缓冲。当输出缓冲激活后,脚本将不会输出内容(除http标头外),相反需要输出的内容被存储在内部缓冲区中。注意:输出缓冲区是可堆叠的,这即意谓着,当有一个 ob_start() 是活跃的时, 你可以调用另一个 ob_start() 。 只要确保又正确调用了 ob_end_flush() 恰当的次数即可。 如果有多重输出回调函数是活跃的,输出内容会一直按嵌套的顺序依次通过它们而被过滤。
<?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 ();
?>
ob_get_contents — 返回输出缓冲区的内容
注意:只是得到输出缓冲区的内容,但不清除它
返回值:此函数返回输出缓冲区的内容,或者如果输出缓冲区无效将返回 FALSE 。
<?php
ob_start ();
echo "Hello " ;
$out1 = ob_get_contents ();
echo "World" ;
$out2 = ob_get_contents ();
ob_end_clean ();
var_dump ( $out1 , $out2 );
?>
ob_get_length — 返回输出缓冲区内容的长度
描述:此函数将返回输出缓中冲区内容的长度。返回值:返回输出缓冲区内容的长度;或者返回 FALSE ——如果没有起作用的缓冲区。
<?php
ob_start ();
echo "Hello " ;
$len1 = ob_get_length ();
echo "World" ;
$len2 = ob_get_length ();
ob_end_clean ();
echo $len1 . ", ." . $len2 ;
?>
ob_end_flush — 冲刷出(送出)输出缓冲区内容并关闭缓冲
描述:这个函数将送出最顶层缓冲区的内容(如果里边有内容的话),并关闭缓冲区。如果想进一步处理缓冲区中的内容,必须在 ob_end_flush() 之前调用 ob_get_contents() ,因为在调用 ob_end_flush() 后缓冲区内容被丢弃。
返回值:成功时返回 TRUE , 或者在失败时返回 FALSE 。 错误的原因首先是,在调用时没有一个起作用的缓冲区,或者是因为某些原因缓冲区不能被删除(可能对特殊缓冲区而言)。
<?php
while (@ ob_end_flush ());
?>
ob_get_flush — 刷出(送出)缓冲区内容,以字符串形式返回内容,并关闭输出缓冲区。
返回值:返回输出缓冲区的内容;或者是,如果没有起作用的输出缓冲区,返回 FALSE 。
<?php
//using output_buffering=On
print_r ( ob_list_handlers ());
//save buffer in a file
$buffer = ob_get_flush ();
file_put_contents ( 'buffer.txt' , $buffer );
print_r ( ob_list_handlers ());
?>
ob_end_clean — 清空(擦除)缓冲区并关闭输出缓冲
描述:此函数丢弃最顶层输出缓冲区的内容并关闭这个缓冲区。如果想要进一步处理缓冲区的内容,必须在 ob_end_clean() 之前调用 ob_get_contents() ,因为当调用 ob_end_clean() 时缓冲区内容将被丢弃。
返回值:成功时返回 TRUE , 或者在失败时返回 FALSE 。 错误的原因首先是,在调用时没有一个起作用的缓冲区,或者是因为某些原因缓冲区不能被删除(可能对特殊缓冲区而言)。
<?php
ob_start ();
echo 'Text that won\'t get displayed.' ;
ob_end_clean ();
?>