ぷっぽプログラミング備忘録

linux, javascript, php, C#, そのうちScalaとかアプリ開発とかやってみたいです。

phpのcsvダウンロード【utf-8からshiftjisに変換して出力】

概要

php純正のフィルター【convert.iconv.ほげほげ】を使うと簡単。ただし、注意点もある。

  header('Content-type: application/csv');
  header('Content-disposition: attachment; filename=sample.csv');

  $dataArray = ['ひとつめ', 'ふたつめ', 'みっつめ'];
  $fp = fopen('php://output', 'w');
  stream_filter_append($fp, 'convert.iconv.utf-8/cp932//TRANSLIT');
  fputcsv($fp, $dataArray);
  fclose($fp);

注意点

TRANSLITをつけること。
これをつけ忘れると、utf-8からshift-jisに変換失敗した場合に何もでない。 つけておけば、適宜、変換失敗しても代替文字に置き換えて出力してくれる。

参考文献

PHP: 変換フィルタ - Manual

【EC-CUBE 2.13.5】特殊文字が含まれている受注情報をCSVダウンロードする方法 | YARUMAE