Они без кавычек не работает с 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-го параметра ?

(конечно, это может нарушить то, что сейчас работает, - что означает, что вам придется иметь дело с двумя отдельными случаями: файлами с полями заключенные в двойные кавычки и файлы, которые не могли быть прочитаны в первом случае)