2010-10-31 87 views
4

我允许在我的php文件中有两个或更多的ob_start();如果是这样,结束一个ob_start();并开始另一个的正确方法是什么?PHP ob_start()问题

回答

6

从手册:

输出缓冲器是可堆叠的,即, 可以拨打ob_start(),而另一个 ob_start()是有效的。只要确保 您调用ob_end_flush()函数的次数 适当数量。如果 多输出回调函数是 活性,输出被在 嵌套顺序过滤 依次经由他们每个人。

除了堆叠(嵌套)之外,还可以按顺序分开放置块。

<? 
ob_start(); 
echo "Foo"; 
ob_end_flush(); // outputs buffer contents and turns off output buffering 

ob_start(); 
echo "Bar"; 
ob_end_flush(); 
?> 
0

您可以在页面上执行多个ob_start()。用ob_end_clean()结束ob_start()。

ob_start(); 
$postOutput = preg_replace('/<img[^>]+./','', ob_get_contents()); 
ob_end_clean(); 
echo $postOutput; 
+1

如果你没有做任何额外的处理'$ postOutput'然后'ob_end_clean()'只是相比'ob_end_flush做额外的工作()' – 2010-10-31 01:26:54

+0

权利,因为ob_end_clean会删除上缓冲。 – matthewpavkov 2010-10-31 01:30:18