環境
- Windows7
- PHP 7.1.10
setlocale
Windowsではロケールの設定に失敗することがあるようです。
setlocale
の指定をja_JP.UTF-8
以外にしてください。
コード
<?php
use SplFileObject;
setlocale(LC_ALL, 'English_United States.1252');
$filename = 'SJISのcsvふぁいる.csv';
$spec = "php://filter/read=convert.iconv.cp932%2Futf-8/resource=$filename";
$csv = new SplFileObject($spec, 'rb');
$csv->setFlags(
SplFileObject::DROP_NEW_LINE |
SplFileObject::READ_AHEAD |
SplFileObject::SKIP_EMPTY |
SplFileObject::READ_CSV
);
foreach($csv as $i => $row) {
print_r($row);
}
参考
Windows版 PHP7 の環境で CSV アップロードに失敗する · Issue #1780 · EC-CUBE/ec-cube
PHPでSJISのCSVを読み込んでUTF-8として処理する場合のサンプルコード コメント