■
動作未確認
$reader = Reader::createFromPath($file[0]->getFileUri(), 'r'); // 文字コードを判別するために10行程採取 $inspection = ''; foreach (range(1, 10) as $i) { $row = $reader->fetchOne($i); if ($row) { $inspection .= implode(',', $row); } } if ($inspection) { $csv = file_get_contents($file[0]->getFileUri()); $encoding = mb_detect_encoding($csv, 'SJIS-win,EUC-JP,UTF-8,WINDOWS-1252,ISO-8859-15,ISO-8859-1,ASCII'); if (!$encoding) { } $filter = urlencode('convert.iconv.' . $encoding . '/UTF-8'); $reader->appendStreamFilter($filter); }
php csv import
// goodby/csvの例 $records = []; $config = new LexerConfig(); $config ->setDelimiter(",") ->setFromCharset('SJIS-win') ->setToCharset('UTF-8') // Customize target encoding. Default value is null, no converting. ; $lexer = new Lexer($config); $interpreter = new Interpreter(); $interpreter->unstrict(); // Ignore row column count consistency $interpreter->addObserver(function(array $row) use (&$records) { $records[] = $row; }); $lexer->parse($file_path, $interpreter); return $records; // League\Csvの例 $reader = Reader::createFromPath($file_path, 'r'); $filter = urlencode('convert.iconv.SJIS-win/UTF-8'); $reader->appendStreamFilter($filter); return $reader; }