ob_end_clean

関数の概要

ob_end_cleanはPHPの出力バッファリング機能を制御する関数です。この関数は、現在の出力バッファの内容を破棄し、バッファリングを終了します。つまり、出力された内容をブラウザなどに送信せずに消去し、バッファを閉じることができます。出力を途中でキャンセルしたい場合や、余計な出力を防ぎたい時に便利です。

パラメータの説明

  • なし: ob_end_cleanはパラメータを取らず、呼び出すだけで動作します。

戻り値

成功した場合は true を返します。すでに出力バッファリングが開始されていない場合や、エラーが発生した場合は false を返します。

使用例

基本的な使い方

<?php
ob_start();          // 出力バッファリング開始
echo "表示されたくない文字列";
ob_end_clean();      // バッファを破棄し終了
echo "この文字列だけ表示されます";
?>

この例では、一時的にバッファリングを有効化し、その後に出力された文字列を消します。結果として「この文字列だけ表示されます」がブラウザに表示されます。

レスポンスキャッシュなどでの利用例

<?php
ob_start();
// 複雑な処理やテンプレート読み込み
include 'template.php';

// ある条件で出力を破棄したい
if ($error) {
    ob_end_clean(); // 出力クリアしバッファ終了
    http_response_code(500);
    echo "エラーが発生しました。";
} else {
    ob_end_flush(); // バッファの内容を出力
}
?>

条件によっては出力内容を消して代わりにエラーメッセージを表示したい場合にもob_end_cleanは役立ちます。

意図せぬ空白の除去

<?php
ob_start();
// HTMLやPHPファイルの読み込みで余計な空白が出力されることがある
include 'header.php';
// 空白や不要出力を消す
ob_end_clean();

// 正常なコンテンツを再度出力
echo "正常なページコンテンツ";
?>

テンプレートファイルに不要な空白が混入している場合、その出力をバッファで保管し破棄することで、意図しない空白の表示を防げます。

関連する関数

  • ob_start() – 出力バッファリングを開始する
  • ob_get_contents() – 現在のバッファ内容を取得する
  • ob_end_flush() – バッファの内容を出力しバッファを終了する
  • ob_flush() – バッファの内容を出力するがバッファは終了しない

まとめ

ob_end_cleanはPHPの出力バッファリングを使用する際に、出力内容を破棄してバッファリングを終了したい場合に非常に便利な関数です。不要な出力や空白を消してから正常な処理を続けたいとき、条件によって異なるレスポンスを返したいときに役立ちます。パラメータは不要で、関数が成功すれば true を返すため、シンプルに使えます。出力制御の基本としてぜひ覚えておきましょう。