Posts Tagged ‘ob_get_contents’

2011年01月31日に投稿

[PHP]var_dump関数の出力結果をファイルに保存する

連想配列の中身を確認する時はvar_dump関数を使用すると便利ですが、この結果をブラウザではなくファイルに出力したい場合があります。
配列をそのままファイルに書きこむとarrayとなってしまい中身を確認することができません。
そんな時はob_start関数を使用することで解決できます。連想配列をファイルに書き込みを行うサンプルコードを下記に示します。

ob.php
[PHP]
‘ほげ’,
‘sore’ => ‘それ’,
‘dore’ => ‘どれ’
);

ob_start();
var_dump($arr);
$result =ob_get_contents();
ob_end_clean();

$fp = fopen(“./dump.txt”, “a+” );
fputs($fp, $result);
fclose( $fp );
?>
[/PHP]
ob_start関数はマニュアルによると、通常ブラウザに出力される情報をバッファと呼ばれる領域に保存しあとから取り出すことができるようにする関数のようです。出力を行う前にob_start()を実行し、var_dump($arr)で配列の中身をバッファに出力します。この時点ではブラウザに出力されません。その後にバッファからデータを取り出すことができる関数のob_get_contents()を実行し、結果を$resultに保存します。$resultにはvar_dump($arr)の結果が保存されます。最後にob_end_clean()でバッファの中身を削除します。

あとは、通常通り$resultの中身をdump.txtへ書き込みます。dump.txtの中身は下記の通りです。
dump.txt
[php]
array(3) {
[“hoge”]=>
string(4) “ほげ”
[“sore”]=>
string(4) “それ”
[“dore”]=>
string(4) “どれ”
}
[/php]
var_dump($arr)の実行結果がそのまま保存されているのが分かります。