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