私は他の誰かのコードに取り組んでおり、タグと混合された最大 800 行のマークアップがあります。これらのページにいくつかのテンプレートを適用しようとしていますが、すべての出力を出力バッファーにキャプチャすることから始め、それを変数として返してから、1 つずつ並べ替えようと考えました。
問題は、出力を文字列として返すときにバッファの最後で 1024 文字で切り捨てられることです。これはなぜでしょうか?
私は他の誰かのコードに取り組んでおり、タグと混合された最大 800 行のマークアップがあります。これらのページにいくつかのテンプレートを適用しようとしていますが、すべての出力を出力バッファーにキャプチャすることから始め、それを変数として返してから、1 つずつ並べ替えようと考えました。
問題は、出力を文字列として返すときにバッファの最後で 1024 文字で切り捨てられることです。これはなぜでしょうか?
通常、これは行われません。これは、次のことを意味します。
ob_start($callback)
特定のコールバックがアクティブになっている別のものがあります (何がob_get_level
言いますか?)。ob_get_clean()
これらの 3 つはそれについてです。コードがなければ、他に言うことはあまりありません。
これらの 1024 バイトは、出力の先頭ではない可能性があります。一部のコンテンツは、既に出力バッファーを通過している可能性があります。テスト目的で試してください:
ob_start(NULL, 1<<20); // 1MB buffer
echo ...;
$all = ob_get_contents();
ob_end_clean();
また、代わりにテストしob_get_flush()
ます。他のすべてが失敗した場合は、カスタム ob_ ハンドラーを使用します。