0

以下は私が望むものを達成していません

<?
echo ob_start() . "<br>";
echo "1x<br>";
echo ob_start() . "<br>";
echo "2x<br>";
echo ob_flush() . "<br>";
echo "3x<br>";
echo ob_flush() . "<br>";
?>

出力は次のとおりです

1
1x
1
2x
1
3x
1

私はの線に沿って何かを望んでいます

1x
3x
2x

問題は、2 番目の ob_start() からの出力を最初の出力バッファーに入れることだと思います。しかし、どうすれば目的の出力を取得できますか?

基本的に私が達成しようとしているのは、出力の後半の時点で HTML ドキュメントの先頭にある必要があるタグを提供することです。つまり、スクリプトの途中で、必要なドキュメント ヘッド情報を出力した後、.

4

5 に答える 5

2

ob_startについては PHP のマニュアルを参照してください。あなたはしたくない

echo ob_start();

その関数は true または false を返すため、代わりに 1 または 0 を出力します。

ob_start();
echo "1x" . "<br />";
echo "2x" . "<br />";
echo "3x" . "<br />";
ob_flush();

全体的に、あなたの目的はあまり明確ではありません。ob_start() は、送信前に一連の出力をクリーンアップするために使用されます。スタックとして使用しないでください。

PHP でスタックを使用する場合は、SplStackを試してください。

于 2009-06-15T06:42:59.453 に答える
1

なぜあなたはただ書いてみませんか

echo "1x"."<br>";
echo "3x"."<br>";
echo "2x"."<br>";
于 2009-06-15T06:41:41.673 に答える
1

次はどうでしょうか。

<?php
echo ob_start();
echo "1x<br>";
$keep_me_1 = ob_get_contents(); /* optional and for later use */
echo ob_flush();

echo ob_start();
echo "3x<br>";
$keep_me_2 = ob_get_contents(); /* optional and for later use  */
echo ob_flush();

echo ob_start();
echo "3x<br>";
$keep_me_3 = ob_get_contents(); /* optional and for later use  */
echo ob_flush();

?>

「スタック」機能をさらに使用したい場合は、 を参照してくださいob_end_flush

于 2009-06-15T06:46:15.437 に答える
0

ob_get_contents() を使用して内部バッファの内容を文字列に保存し、ob_end_clean() を呼び出して内容を破棄できます。後で、外側のバッファーでコールバック関数を使用して文字列を書き出します。

于 2009-06-15T06:47:17.853 に答える