関数の概要
ob_clean は、PHPの出力バッファリング機能に関連する関数で、現在の出力バッファの内容を消去します。つまり、バッファに溜まった出力データを削除し、バッファを空にするために使います。この関数を使うことで、意図しない出力を消したり、出力を初期化したりすることが可能です。
パラメータの説明
- この関数はパラメータを取りません。
戻り値
ob_clean は、バッファの消去が成功した場合に true を返し、失敗した場合(例えば、出力バッファが存在しない場合など)に false を返します。
使用例
基本的な使い方
<?php
ob_start(); // 出力バッファリングを開始
echo "この内容はバッファに溜まっています。";
ob_clean(); // バッファの内容を消去
echo "新しい出力内容です。";
ob_end_flush(); // バッファの内容を出力し、バッファリングを終了
?>
この例では、まず出力バッファを開始し文字列を出力していますが、ob_clean() によって内容が消去されます。その後に新たな文字列を出力し、最後にバッファを出力して終了しています。
複数回のバッファ消去
<?php
ob_start();
echo "一時的なエラーメッセージ";
if (true) {
ob_clean(); // エラーメッセージを消去
echo "正常な出力";
}
ob_end_flush();
?>
条件によって不要な出力がある場合、ob_clean()を使って出力をリセットし、適切な内容だけを最終的に表示させることができます。
header関数と組み合わせて使う例
<?php
ob_start();
echo "この出力は一旦バッファに溜まります。";
// 出力前にヘッダーを送るためにバッファを消去
ob_clean();
header("Location: https://example.com");
ob_end_flush();
?>
HTTPヘッダーを送る前に何らかの出力があるとエラーになりますが、ob_clean() でバッファを消去してからヘッダーを送れば問題を回避できます。
関連する関数
ob_start()ob_flush()ob_end_flush()ob_get_contents()ob_end_clean()
まとめ
ob_clean() はPHPの出力バッファリングを利用する際に、現在のバッファの内容を消去して空にするシンプルかつ便利な関数です。例えば、不必要な出力を削除したい時や、ヘッダー送信前にバッファを綺麗にしたい時に使います。パラメータが不要で扱いやすく、出力制御を細やかに行いたい場面で覚えておくと実務でも役立ちます。
