2009年3月27日金曜日

PHPの fputcsv()で CSVを出力する

(2011/1/17 追記:まとめ的なものも書いた → floatingdays: PHPで CSVをダウンロードするための参考サイトとサンプルコード


PHPでCSVを出力するなら、fputcsv()が便利。
$fp = fopen('test.csv', 'w');
fputcsv($fp, array(123, 'abc', '"quoted"', ',,,', 'あああ'));
fclose($fp);



123,abc,"""quoted""",",,,",あああ

ポイント
  • 必要に応じてダブルクォートで囲ってくれる
  • データにダブルクォートを含む場合、ダブルクォートを2重にしてエスケープしてくれる


デフォルトではカンマ区切りになるが、第3引数で区切り文字を指定できる。

タブ区切り(TSV)にする場合の例
$fp = fopen('test.csv', 'w');
fputcsv($fp, array(123, 'abc', '"quoted"', ',,,', 'あああ'), "\t");
fclose($fp);


難点は文字コードの指定ができないこと。
CSVをExcelで普通に開く場合、マルチバイト文字がShift_JISでないと文字化けしてしまう。
事前にSJISに変換しておくしかないのか。



0 件のコメント:

コメントを投稿