в файле используется запятые в качестве делимитера < /strong> и двойные кавычки для полей, содержащих запятую (ы) < /strong>, как: < /p>
Код: Выделить всё
foo,"bar, baz",foo2
< /code>
Проблема < /strong> я сталкиваюсь с тем, что я получаю поля, содержащие запятую (ы). Я получаю: < /p>
[*]"2
Код: Выделить всё
rue du ..."< /code> < /li>
< /ul>
вместо: 2, rue du ... < /code>. < /p>
кодирование: < /strong>
file не кажется в UTF8. В начале у него есть странные Wharacters (по-видимому, не Bom, выглядит так при преобразовании из ASCII в UTF8: ÿÞ < /code>) и не отображает акценты. MB_DETECT_ENCODING () < /CODE> В строках CSV он возвращает ascii < /strong> < /li>
< /ul>
Но не преобразует: < /p>
mb_convert_encoding()
Код: Выделить всё
iconv()
Код: Выделить всё
ASCII< /code> utf8 < /code> не разрешено < /strong>. < /li>
< /ul>
parsing: < /strong>
я пытался проанализировать с помощью этого One-liner (см. Эти 2 комментарии), используя str_getcsv () < /> < /prise < /prise (см.$csv = array_map('str_getcsv', file($file['tmp_name']));
< /code>
Я затем попробовал с fgetcsv () < /code>: < /p>
$f = fopen($file['tmp_name'], 'r');
while (($l = fgetcsv($f)) !== false) {
$arr[] = $l;
}
$f = fclose($f);
< /code>
В обоих случаях я получаю поле своего адреса в 2 частях. Но когда я пробую этот образец кода, я получаю правильно проанализированные поля: < /p>
$str = 'foo,"bar, baz",foo2,azerty,"ban, bal",doe';
$data = str_getcsv($str);
echo '' . print_r($data, true) . '';
< /code>
Подвести итог вопросами: < /p>
Каковы символы в начале файла? < /li>
Как я могу быть уверен в кодировании? (Atom читает файл с UTF-16 LE
Подробнее здесь: https://stackoverflow.com/questions/525 ... n-utf-16le