LoginSignup
6
4

More than 5 years have passed since last update.

Windows+PHP7でCSVパースに失敗する場合の解決方法

Last updated at Posted at 2018-03-23

環境

  • 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として処理する場合のサンプルコード コメント

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4