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
カンマもダブルクォーテーションも問題なく読み込めています。