2014/08/20

PHPにおけるCSV出力について

CSV出力には、fpuscsv関数を利用するのが簡単だが、文字コードの指定ができないなど
不便な点がいくつかある。

// 追記モードでファイルを開く
$fp = foepn('ファイルパス', 'a');

// CSV出力用の配列を用意
$line = array();
$line[] = "a";
$line[] = "b";
$line[] = "c";
$line[] = "d";

// 配列を自動的にCSV出力
fputcsv($fp, $line);

// ファイルクローズ
fclose($fp);


(問題点)
 ・文字コードの指定ができない。
 ・エンクロージャを必ず付ける(付けない)ような指定ができない。
 ・改行コードの指定ができない。

この問題を解決する場合は、自前で出力データを編集してファイル出力するしかない。

// 追記モードでファイルを開く
$fp = foepn('ファイルパス', 'a');

// 出力データを編集(改行コードはCRLF)
$line = "a,b,c,d\r\n";

// UTF-8をSJISに変換して出力
fwrite($fp, mb_convert_encoding($line, 'SJIS', 'UTF-8'));

// ファイルクローズ
fclose($fp);

0 件のコメント: