出力制御機能を使用すると、スクリプト内のデータの出力を自由に制御できます。これは、特にデータの出力後にファイルヘッダーを
出力したい場合に非常に便利です。出力制御関数は、header() または setcookie()、
を使用して送信されるファイル ヘッダー情報には影響しませんが、echo() や PHP コードと同様のデータ ブロックにのみ影響します。
出力制御の一般的な印象を与えるために、最初に簡単な例を示します:
例 1.
------ ---- ------------------------------------------------ ---- ------------
----------------------------- - -
ob_start(); //バッファを開きます
echo "hellon"; //出力
header("location:index.php"); //ブラウザをindex.phpにリダイレクトします。 ob_end_flush();//すべてのコンテンツをブラウザに出力します
?>
-------------------------- --- ---------------------------------------------- --- -------
---------------------------------
すべてのペアheader() 関数は、この関数がファイル ヘッダーをブラウザに送信することを知っていますが、
この関数を使用する前に出力がある場合 (スペース、キャリッジ リターン、ライン フィードなどの空の出力を含む)、エラーが発生します。プロンプトが表示されます。最初の行の ob_start() を
削除してからこのプログラムを実行すると、次のエラー メッセージが表示されることがわかります。「header had
allready send by」!ただし、ob_start を使用すると、エラー メッセージは表示されません。その理由は、バッファーが開かれたときに、エコーの後の
文字がブラウザーに出力されず、サーバー上に残るからです。 flash または ob_end_flush を使用すると、
ファイル ヘッダー出力エラーは発生しません。
1. 関連関数の紹介:
1. フラッシュ: バッファーと出力の内容を更新します。
関数の形式: flash()
説明: この関数は頻繁に使用され、非常に効率的です。
2. ob_start: 出力バッファを開きます
関数形式: void ob_start(void)
説明: バッファがアクティブ化されると、PHP プログラムからのファイル以外のヘッダー情報はすべて送信されませんが、保存されます。 .内部バッファ内。
バッファの内容を出力するには、ob_end_flush() または flash() を使用してバッファの内容を出力します。
3. ob_get_contents: 内部バッファの内容を返します。
使用法: string ob_get_contents(void)
説明: この関数は、現在のバッファーの内容を返します。出力バッファーがアクティブ化されていない場合は、false を返します。
4. ob_get_length: 内部バッファーの長さを返します。
使用法: int ob_get_length(void)
説明: この関数は、出力バッファーがアクティブ化されていない場合は、ob_get_contents と同じように現在のバッファーの長さを返します
。その後、 false を返します。
5. ob_end_flush: 内部バッファの内容をブラウザに送信し、出力バッファを閉じます。 この記事へのリンク http://www.cxybl.com/html/wlbc/Php/20120531/27127.html