0

phpでcsvを開く

perlでcsvを開く際、一行づつ読み込んで、splitで細かくしていくってのが一般的だけどphpの場合、fgetcsvっていう便利な関数が用意されている。
簡単にすればこんな形になります。
$DATAに配列として代入されます。
別にそのまま処理してもOK

sample.csv
001,山田,654-0024
002,河合,005-0424
003,歌田,541-0041

setlocale(LC_ALL, 'ja_JP.UTF-8');
$i = 0;
$handle = fopen("sample.csv", "r");
while (($data = fgetcsv($handle, 1000, ",")) !== false) {
$num = count($data);
for ($c=0; $c < $num; $c++) {
$DATA[$i]["id"] = $data[0];
$DATA[$i]["name"] = $data[1];
$DATA[$i]["zip"] = $data[2];
}
$i++;
}
fclose($handle);

気をつける部分は、一行目のsetlocale(LC_ALL, ‘ja_JP.UTF-8’)
fgetcsvがマルチバイトに対応してないため、UTF8で記述されたcsv等はこのようにエンコード名を明記する必要があります。
phpの関数は便利だねー。

まえ、どっかのブログでphpの関数が多すぎるって書いてたけど多くて何が悪いのだろうと思う。
関数名が長くなるのも当然、いやならオーバーライドしてやればOK。
LL万歳!!

大阪のWEB屋です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です