fgetcsv не может прочитать окончание строки в csv-файле, отформатированном в Mac, есть ли лучшее решение?
Я анализировал CSV-файл, используя php с функцией fgetcsv. Он проанализировал все содержимое в строке, позже я обнаружил, что CSV содержит возврат Carraige как "\r". Я видел - это было сообщено как ошибка PHP ранее. Я решил это, установив конфигурацию среды выполнения PHP, которая -
ini_set("auto_detect_line_endings", "1");
Есть ли еще решение или это правильный путь?
Спасибо
2 ответа
Настройка auto_detect_line_endings
явно рекомендуется в документации php.
Тем не менее, я не могу понять, почему вы хотите разделить строки с \r
в 2010 году. Если возможно, конвертируйте их в UNIX-стиль \n
,
\r
Окончания строк создаются Microsoft Excel при сохранении в виде файла CSV, поэтому при работе с электронной таблицей Excel не так уж много обойти это.
С помощью auto_detect_line_endings
работает нормально, или вы можете нормализовать окончания строк с помощью preg_replace("/\r\n|\n\r|\n|\r/", "\n", $subject);