データベースに保存されているデータ等を、ブラウザからアクセスした際にCSVファイルとしてダウンロードさせたい時があります。CSV形式のデータを自前で作るのは面倒なので、何か便利な関数がないか探したところ fputcsv 関数が見つかりました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php $data = array( array('佐藤', '東京都', '29歳'), array('田中', '千葉県', '31歳'), array('鈴木', '北海道', '54歳') ); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=data.csv'); $stream = fopen('php://output', 'w'); foreach($data as $row){ fputcsv($stream, $row); } |
8行目から9行目
ブラウザからアクセスした際にダウンロードダイアログを表示させてファイルのダウンロードをさせるには、header 関数を使用します。今回の場合は、data.csv というファイル名でダウンロードさせます。
11行目から14行目
CSVデータの生成に fputcsv 関数を使用します。fputcsv 関数は第2引数に配列を渡すと、CSV形式のデータに加工して第1引数のファイルポインターの指すファイルに書き込みを行います。しかし目的はファイルへの書き込みでなく、ブラウザでダウンロードさせることです。そこで fopen 関数の第1引数に「’php://output’」を渡します。こうすることで出力バッファをファイルポインターとして扱うことができます。