0

次のようなPHPスクリプトによってレンダリングされたHTMLをキャッチする3パーティスクリプトが1つあります。

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

およびwriteCache:

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

コンテンツを取得してファイルに保存します。

これで、HTML文字列を取得してクリーンアップするサードパーティの2番目のスクリプトができました。

$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 に答える