あ</p>",""
上記のような3列で1行のSJISのCSVがあった場合、 SJISのロケール追加して、
$ locale -a | grep -i ja ja_JP ja_JP.SJIS ja_JP.eucjp ja_JP.sjis ja_JP.ujis ja_JP.utf8 japanese japanese.euc japanese.sjis
という環境であっても、
setlocale(LC_ALL, 'ja_JP.SJIS');
をした後に、fgetcsv() を利用して正常にCSVが取り込むことができない。
別の方法もあった気がしたけど、忘れてしまったのでので今回対応方法をメモ。
考え方としてはiconvコマンドを利用して、SJISファイルをUTF8ファイルに変換してからPHPで取り込むという方法。
exec("iconv -f sjis-win -t utf-8 " . $path . " -o " . $path); $handle = fopen($path, "r"); $row = fgetcsv($handle, 1024, ',', '"');