ob_clean() 清理所有级别的ob?
ob_clean() clean all levels of ob?
我刚刚有一个实例,我正在执行 ob_clean(),然后回显我的 json,以进行 ajax 调用。问题是,当时我是 2 级 ob,而 ob_clean() 只是清除内部 ob。为了清除它们,好吧,我只是做了
ob_clean();
ob_clean();
清理所有当前缓冲区的正确方法是什么?
编辑:是的,这个问题很相似,但另一个是关于冲洗,我说的是清洁。关于 end_clean、干净、get_clean 等,有些事情我不明白,因此,答案将与另一个答案有所不同和细微差别。
即:
给定:
ob_start();
echo 'before';
ob_start();
echo 'second';
:
while (ob_get_level()){
ob_end_clean();
}
有效
while (ob_get_level()){
ob_clean();
}
导致无限循环,最终超时。
ob_clean();
ob_clean();
ob_clean();
ob_clean();
ob_clean();
不起作用。 (仍然回声:'before')
ob_get_clean();
ob_get_clean();
有效
ob_end_clean();
ob_end_clean();
有效
您可以在 while
循环中简单地 运行 ob_get_level()
,例如:
// put this line at the beginning of your script
// to disable auto-buffering through output_buffering ini directive
if (ob_get_level()) ob_end_clean();
ob_start();
ob_start();
ob_start();
ob_start();
$out = '';
while (ob_get_level())
{
echo ob_get_level()."\n";
$out .= ob_get_clean();
}
echo $out;
我刚刚有一个实例,我正在执行 ob_clean(),然后回显我的 json,以进行 ajax 调用。问题是,当时我是 2 级 ob,而 ob_clean() 只是清除内部 ob。为了清除它们,好吧,我只是做了
ob_clean();
ob_clean();
清理所有当前缓冲区的正确方法是什么?
编辑:是的,这个问题很相似,但另一个是关于冲洗,我说的是清洁。关于 end_clean、干净、get_clean 等,有些事情我不明白,因此,答案将与另一个答案有所不同和细微差别。
即: 给定:
ob_start();
echo 'before';
ob_start();
echo 'second';
:
while (ob_get_level()){
ob_end_clean();
}
有效
while (ob_get_level()){
ob_clean();
}
导致无限循环,最终超时。
ob_clean();
ob_clean();
ob_clean();
ob_clean();
ob_clean();
不起作用。 (仍然回声:'before')
ob_get_clean();
ob_get_clean();
有效
ob_end_clean();
ob_end_clean();
有效
您可以在 while
循环中简单地 运行 ob_get_level()
,例如:
// put this line at the beginning of your script
// to disable auto-buffering through output_buffering ini directive
if (ob_get_level()) ob_end_clean();
ob_start();
ob_start();
ob_start();
ob_start();
$out = '';
while (ob_get_level())
{
echo ob_get_level()."\n";
$out .= ob_get_clean();
}
echo $out;