FuelPHP の Format クラスで CSV を読み込むときの問題

2016年1月に書いた記事です。

FuelPHP の Format クラスはとても便利なのですが、いまいち挙動不審な動きをするので、つまらないところではまります。。。

例えば、以下のようにして CSV ファイルを Format クラスで読み込む場合、

 $data = file_get_contents($csvfilename);
 $data = Format::forge($data, 'csv')->to_array();

正しい CSV ファイルにも関わらず、きちんと読み込めないことが多々あります。
問題となるのは、file_get_contents() ではなく、Format::forge の方。
いろいろ調べてみると、、、

FuelPHPのformatクラスの改行判定でハマった
http://qiita.com/sabakaido/items/3378f928ecd69c1ed61d

上記のサイトで書かれている enclosure がクセモノらしい。

結論としては、config/format.php の以下の設定中の、、、

 'csv' => array(
        'import' => array(
                'delimiter' => ',',
                'enclosure' => '"',
                'newline'   => "\n",
                'escape'    => '\\',
        ),

enclosure を '' にしたら正常に読み込めるようになりました。
おそらくあえて '"' を設定しているはずので不具合のあるパターンもあると思いますが、今のところ問題は出ていません。

コメント

タイトルとURLをコピーしました