Они без кавычек не работает с fgetcsv
Я пытаюсь проанализировать CSV-файлы, загруженные пользователем через PHP, но он работает неправильно.
Я загрузил несколько правильно отформатированных CSV, и он работал нормально, однако; у меня есть много пользователей, пытающихся импортировать CSV-файлы, экспортированные из Excel, и у них возникают проблемы. Я сравнил файлы с моими и заметил, что в файлах Excel нет кавычек вокруг записей. Кроме того, они идентичны. Если я открою его и сохраню его с открытым офисом, не делая никаких изменения вообще это работает. Так что я почти уверен, что это связано с цитатами.
мой вопрос: как я могу прочитать эти неправильно отформатированные CSV?
UPDATE: причина найдена!
это специфично для Mac-версии Excel. Разрывы строк обрабатываются по-разному на Mac по какой-то произвольной причине, поэтому перед использованием fgetcsv вы должны сделать это;
ini_set('auto_detect_line_endings',TRUE);
2 ответов
это специфично для Mac-версии Excel. Разрывы строк обрабатываются по-разному на Mac по какой-то произвольной причине, поэтому перед использованием fgetcsv вы должны сделать это;
ini_set('auto_detect_line_endings',TRUE);
смотреть на!--4-->страница руководства fgetcsv
, ее прототип выглядит так :
array fgetcsv ( resource $handle [, int $length
[, string $delimiter = ',' [, string $enclosure = '"'
[, string $escape = '\' ]]]] )
значение по умолчанию $enclosure
(т. е. 4-й параметр) - это двойные кавычки.
Что делать, если вы попытаетесь указать, что вы не хотите никакого приложения, указав пустую строку для этого 4-го параметра ?
(конечно, это может нарушить то, что сейчас работает, - что означает, что вам придется иметь дело с двумя отдельными случаями: файлами с полями заключенные в двойные кавычки и файлы, которые не могли быть прочитаны в первом случае)