PHP で CSV ファイルを読み込む

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

カンマもダブルクォーテーションも問題なく読み込めています。

Google サイト内検索

Amazonアソシエイト