ob_get_clean

関数の概要

PHPの ob_get_clean 関数は、現在の出力バッファの内容を文字列として取得し、その後バッファを消去(クリア)してバッファリングを終了します。つまり、バッファに溜まった出力を読み取ると同時に、出力バッファをリセットしたい場合に使われる便利な関数です。

パラメータの説明

  • この関数はパラメータを取りません。呼び出すだけで現在のバッファの内容を取得し、バッファをクリアします。

戻り値

現在の出力バッファの内容が文字列として返されます。もしバッファリングが開始されていない場合は FALSE を返します。

使用例

基本的な使い方

<?php
ob_start();
echo "Hello, world!";
$content = ob_get_clean();
echo "取得した内容:". $content;
?>

この例では、まず ob_start() で出力バッファを開始し、その後 echo で文字列を出力しています。ob_get_clean() でその出力を取得し、バッファをクリアした後、取得した内容を画面に表示しています。

HTML出力を一時的にバッファリングして加工する例

<?php
ob_start();
?>

<div>
  <p>この内容は一度バッファに溜められます。</p>
</div>

<?php
$html = ob_get_clean();
// 取得したHTMLを小文字に変換
echo strtolower($html);
?>

HTML出力をバッファリングし、一度文字列として取得後に加工(ここでは小文字に変換)してから出力しています。ob_get_clean はこうした一時的な出力の組み換えに便利です。

テンプレートの一部をバッファリングして戻り値にする例

<?php
function get_template_part() {
    ob_start();
    ?>
    <p>これはテンプレートの一部です。</p>
    <?php
    return ob_get_clean();
}

$content = get_template_part();
echo "テンプレートの内容:" . $content;
?>

関数内でバッファを使い、テンプレートのHTMLを文字列として返しています。この方法は、テンプレートの一部を生成して動的に利用したい時に便利です。

関連する関数

  • ob_start() – 出力バッファリングを開始する
  • ob_get_contents() – バッファの内容を取得するがクリアはしない
  • ob_end_clean() – バッファを消去して終了するが内容は取得しない
  • ob_end_flush() – バッファの内容を出力した後、バッファリングを終了する

まとめ

ob_get_clean はPHPの出力バッファ制御の中でも特に便利な関数で、バッファの内容を取得しつつ、自動的にバッファをクリアしてくれます。これにより、出力内容を加工したり、一時的に文字列として扱いたい場合に非常に役立ちます。バッファ制御の基本としてぜひ覚えておきましょう。