ob_get_clean()的输出被截断为1024个字符?

时间:2011-03-13 15:38:33

标签: php output-buffering truncation

我正在研究别人的代码,并且有大约800行标记与标签混合在一起。我正在尝试将一些模板应用于这些页面,我想我会首先捕获输出缓冲区中的所有输出,将其作为变量返回,然后逐个排序。

问题是,当我以字符串形式返回输出时,在缓冲区的末尾,它被截断为1024个字符。为什么会这样?

2 个答案:

答案 0 :(得分:0)

通常,它不会那样做,这可能意味着:

  1. 还有另一个ob_start($callback)有一个特定的回调活动搞砸了(ob_get_level说什么?)。
  2. ob_get_clean()
  3. 之后有错误的操作
  4. 涉及错误的检查方法,1024截止不正确(xdebug对var_dump的限制,html-attributes中的隐藏内容以及不查看源等)
  5. 这3个是关于它的,没有代码,没有什么可说的。

答案 1 :(得分:0)

这1024个字节可能不是输出的开头。某些内容可能已经通过了输出缓冲区。出于测试目的,请尝试:

ob_start(NULL, 1<<20);  // 1MB buffer

echo ...;

$all = ob_get_contents();
ob_end_clean();

同时使用ob_get_flush()进行测试。如果所有其他方法都失败了,请使用自定义ob_处理程序。