2012年11月5日月曜日

PHPでCSVを扱うために。

このエントリーをはてなブックマークに追加

CSVって凄い面倒ですよね

fgetcsvしないと、改行とか、カンマとか、タブとか色々ハマる事が判明した。
んで、その際に、エンコードもしなくちゃいけなくて、それをどうやったら楽にできるのかなーってネットぐるぐる回っていたら良い方法が書かれてたので、それをここにメモ。

$filename="hoge.csv";
$buffer=array();
$contents = file_get_contents($filename);
$enc = detect_encoding_ja( $contents ); //エンコード判定
$buf = mb_convert_encoding($contents, "UTF-8", $enc );  //変換
$fh = tmpfile();
fwrite( $fh, $buf );
rewind($fh);
while( ($data = fgetcsv($fh, 1000,",")) !== FALSE ){
    array_push( $buffer, $data );
}
fclose($fh);
要するに、一括でエンコードしてtempファイルに保存するってやり方ですね。
コードも凄いシンプルになったぜよ。
detect_encoding_jaはここのコードをそのままコピペ
http://d.hatena.ne.jp/t_komura/20091220/1261305552

0 件のコメント :

コメントを投稿