CSV出力とダウンロード選択ダイアログ。

PHPのことだから、CSBCSV出力の標準関数も備わってるのかなぁ」
と思って調べてみたところ、案の定、ありました(笑)
その名も…

fputcsv関数!

…ホンマなんでもアリですよね(´・ω・`)
PHP5以上でないと使えません。


↓こんな感じで使います(配列の要素をCSVファイルに書き出しています)。

$array_data = array(1,2,3,4,5,6,7,8,9);
$outputFile = "/home/choo/test.csv";
touch($outputFile);
$fp = fopen($outputFile, "w");
foreach($array_data as $line){
    fputcsv($fp,$line);
}
fclose($fp);

touch関数を使えば、書き込みたいファイルが存在しない場合、自動生成してくれます。
※Openしたファイルに対して追加書き込みをしたい時には、「"w"」の代わりに「"a"」を指定します。


さらに、このCSVをダウンロードしてローカルに保存させるかどうか選択できるダイアログを
表示させるには…

$filename = "hoge.csv";
header("Content-Type: application/csv");
header("Content-Disposition: attachment; filename=".$filename);
header("Content-Length:".filesize($outputFile));
readfile($outputFile);

これで、「hoge.csv」という名前のCSVファイルをローカルに保存するかどうか選べるダイアログが
表示されます。

※2010-04-15追記

TSVで出力したい場合、「fputtsv」という関数は無いので、fputcsvの引数に「」を渡して処理します。
上の例のfputcsvに修正を加えると…

fputcsv($fp,$line, "¥t");

これでタブ区切りで出力されるようになります。
そして、ダウンロードさせる時のContent-Typeは、
「text/tab-separated-values」
です。