k-holyのPHPとか諸々メモ

Webで働くk-holyがPHP(スクリプト言語)とか諸々のことをメモしていきます。ソースコードはだいたいWindowsで動かしてます。

str_getcsv()の第4引数($escape)の挙動

str_getcsv()はCSV1レコード分の文字列をパースして配列を返してくれるとても便利な関数。(5.3以降)
http://jp.php.net/manual/ja/function.str-getcsv.php

この関数、第2引数のdelimiter(区切り文字)、第3引数のenclosure(囲み文字)はいいとして、第4引数のescape(エスケープ文字)を指定できるとマニュアルには書いてますが、期待通りに動いてくれません。

デフォルトはバックスラッシュとありますが、実際にはデフォルトは第3引数と同じ文字になるみたいです。

ダブルクォート、カンマ、スペース、改行をフィールドに含む場合の挙動を調べた限りでは、今のところデフォルト設定でExcel準拠な感じなので、enclosureと違うescapeを指定する必要がなければ大抵のケースではこの関数で問題なさそうではありますが、要注意ということで。