Подтвердить что ты не робот

CSV без кавычек, не работающих с fgetcsv

Я пытаюсь разобрать CSV файлы, загруженные пользователем через PHP, но он не работает должным образом.

Я загрузил несколько правильно отформатированных CSV, но он работал нормально; У меня есть много пользователей, пытающихся импортировать CSV файлы, экспортированные из Excel, и у них возникают проблемы. Я сравнил файлы с моими и заметил, что файлы Excel не имеют котировок вокруг записей. Кроме того, они идентичны. Если я открою его и сохраню с помощью Open Office, без каких-либо изменений, это сработает. Поэтому я уверен, что это связано с кавычками.

Мой вопрос: как я могу прочитать эти неправильно отформатированные CSV?

UPDATE: Причина найдена!

Это относится к Mac версии Excel. Разрывы строк обрабатываются по-разному на компьютерах Mac по какой-либо причине, поэтому перед использованием fgetcsv вы должны сделать это:

ini_set('auto_detect_line_endings',TRUE);
4b9b3361

Ответ 1

Это относится к Mac версии Excel. Разрывы строк обрабатываются по-разному на компьютерах Mac по какой-либо причине, поэтому перед использованием fgetcsv вы должны сделать это:

ini_set('auto_detect_line_endings',TRUE);

Ответ 2

Глядя на справочную страницу fgetcsv, ее прототип выглядит следующим образом:

array fgetcsv  ( resource $handle  [, int $length  
    [, string $delimiter = ','  [, string $enclosure = '"' 
    [, string $escape = '\\'  ]]]] )

Значение по умолчанию для $enclosure (т.е. 4-й параметр) представляет собой двойную кавычку.

Что делать, если вы попытаетесь указать, что вам не нужен какой-либо корпус, указав пустую строку для этого 4-го параметра?

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