PHP には、CSV ファイルからデータを読み込むための fgetcsv という便利な関数があります。
CSV の文字列を分解する str_getcsv という関数もあるのですが こちらは PHP 5.3 以上からになっています。
というわけで、今回は fgetcsv を紹介します。
【参考サイト】
PHP: fgetcsv - Manual
Manual に載っている次のソースを試してみます。
<?php
$row = 1;
$handle = fopen("test.csv", "r");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
?>
CSV データは次のようになります。
"abc def","123",11,abc "abc,def","12""3",11,abc
ダブルクォーテーションの間にカンマがあったり ダブルクォーテーションの中にダブルクォーテーションを付けたりしています。
結果は次のようになります。
4 fields in line 1: abc def 123 11 abc 4 fields in line 2: abc,def 12"3 11 abc
カンマもダブルクォーテーションも問題なく読み込めています。