4

出力バッファの先頭に何かを追加するにはどうすればよいですか?

たとえば、次のコードがあるとします。

ob_start();

echo '<p>Start of page.</p>';
echo '<p>Middle of page.</p>';
echo '<p>End of page</p>';

コンテンツをブラウザにフラッシュする前に、ページが読み込まれる前 に表示されるように何かを追加するにはどうすればよいですか?<p>Start of page.</p>

ポインタを配列の先頭に移動するように簡単に聞こえますが、出力バッファを使用してそれを行う方法を見つけることができませんでした。

4

5 に答える 5

4

** PHP 5.3 **

ob_start(function($output) {
    $output = '<p>Prepended</p>'.$output;
    return $output;
});

echo '<p>Start of page.</p>';
echo '<p>Middle of page.</p>';
echo '<p>End of page</p>';

** PHP < 5.3 **

function prependOutput($output) {
    $output = '<p>Appended</p>'.$output;
    return $output;
}

ob_start('prependOutput');

echo '<p>Start of page.</p>';
echo '<p>Middle of page.</p>';
echo '<p>End of page</p>';
于 2012-11-26T19:14:13.837 に答える
0

ob_get_contents()関数を使用してバッファのコンテンツを取得できます

ob_start();
echo "World! ";
$out1 = ob_get_contents();
echo "Hello, ".$out1;
于 2012-11-26T19:15:35.517 に答える
0

出力の前にそれが必要ですか?auto_prepend_fileもしそうなら、あなたはディレクティブ を探しています。http://php.net/manual/en/ini.core.php

于 2012-11-26T19:16:30.203 に答える
0

最初に表示したいものの後に2つのob_startコマンドとob_end_flush()を使用し、ページの残りを出力したい場合は再度ob_end_flushでバッファを終了します。

例えば:

ob_start();
ob_start();

echo '<p>Start of page.</p>';

ob_end_flush();

echo '<p>Middle of page.</p>';
echo '<p>End of page</p>';

ob_end_flush();
于 2012-11-26T19:12:47.097 に答える
0

ob_start(ドキュメントはこちら)の最初のパラメーターを参照してください。これにより、バッファーがフラッシュまたは消去されたときに呼び出されるコールバックを提供できます。パラメータとして文字列を受け取り、文字列を出力するため、簡単に実行できるはずです。

function writeCallback($buffer)
{
    return "Added before " . $buffer;
}

ob_start("writeCallback");
于 2012-11-26T19:13:30.593 に答える