1

私は他の誰かのコードに取り組んでおり、タグと混合された最大 800 行のマークアップがあります。これらのページにいくつかのテンプレートを適用しようとしていますが、すべての出力を出力バッファーにキャプチャすることから始め、それを変数として返してから、1 つずつ並べ替えようと考えました。

問題は、出力を文字列として返すときにバッファの最後で 1024 文字で切り捨てられることです。これはなぜでしょうか?

4

2 に答える 2

0

通常、これは行われません。これは、次のことを意味します。

  1. ob_start($callback)特定のコールバックがアクティブになっている別のものがあります (何がob_get_level言いますか?)。
  2. の後に誤った操作があります。ob_get_clean()
  3. 誤ったチェック方法が関係しており、1024 のカットオフが正しくありません (var_dump に対する xdebug の制限、html 属性の非表示のコンテンツ、ソースを見ていないなど)。

これらの 3 つはそれについてです。コードがなければ、他に言うことはあまりありません。

于 2011-03-13T15:51:58.677 に答える
0

これらの 1024 バイトは、出力の先頭ではない可能性があります。一部のコンテンツは、既に出力バッファーを通過している可能性があります。テスト目的で試してください:

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

echo ...;

$all = ob_get_contents();
ob_end_clean();

また、代わりにテストしob_get_flush()ます。他のすべてが失敗した場合は、カスタム ob_ ハンドラーを使用します。

于 2011-03-13T15:57:01.780 に答える