0

我有一个 3 方脚本可以捕获 PHP 脚本呈现的 HTML,如下所示:

ob_start( array(&$this,'writeCache') );

在 writeCache 中:

function writeCache($content)
{
    //data save
}

它获取内容并将其保存到文件中。

现在我有 3 方第二个脚本,它获取 HTML 字符串并清理它:

$content = htmLawed($content); 

htmLawed 这样做:

1. Interpreting $content
2. ob_start()
3. render new content
4. gets the result of the render and returns

所以现在当我把它放在一起时:

function writeCache($content)
{
    $content = htmLawed($content); 
    //data save
}

我得到错误:

Fatal error: ob_end_clean(): Cannot use output buffering in output buffering display handlers

那么有什么方法可以从输出缓冲显示处理程序中逃脱内容,这样我就可以将它传递给 htmLawed 并且它将能够执行 ob_start()?

4

1 回答 1

0

您收到的错误表明您无法从回调中调用 ob_start() 。我不明白为什么您无法解决此问题,但是您需要进行更多重组。

您可能想尝试拦截输出缓冲区的内容并在它进入输出缓冲区回调之前使用 htmLawed() 对其进行处理。

echo htmLawed(ob_get_clean());
ob_end_clean();
于 2012-12-08T01:06:21.247 回答