Как я могу сделать PHP's FGETCSV (), чтобы распознать классический персонаж Mac (CR) нового линии?

StackOverflow https://stackoverflow.com/questions/4759880

  •  16-10-2019
  •  | 
  •  

Вопрос

Я использую этот код, чтобы получить количество столбцов из файла CSV:

$this->dummy_file_handler = fopen($this->config['file'],'r');
if ($dataset =fgetcsv($this->dummy_file_handler))
{
    $this->number_of_columns = count($dataset);
}

Это работает нормально пока не Файл экспортируется с Excel для Mac 2011, так как новый символ линии тогда Классический Mac (CR) который fgetcsv не узнает.

alt text

Если я вручную Измените Newline с классического Mac (CR) на Unix (LR), затем он работает, но мне нужно, чтобы это было автоматизировано.

Как я могу сделать fgetcsv Признайте классический персонаж Mac (CR) New Line?

Это было полезно?

Решение

От руководство:

ПРИМЕЧАНИЕ. Если PHP неправильно распознает окончания строки при чтении файлов либо включенным или созданным компьютером Macintosh, позволяя опцию конфигурации выполнения AUTO_DETECT_LINE_NENDINGS может помочь решить проблему.

Другие советы

Если ответ Саула не работает, я бы написал простой сценарий для прочтения в файле одновременно и str_replace All r с n, сбрасывая результаты в новый файл, а затем fggetCsv's, разбирая этот новый файл.

Я нахожу забавным, что эти термины поступают со времен использования машиностроителей:
n = Line Feed (LF) - продвигает бумагу одну строку.
r = возврат перевозки (CR) - возвращает карету в левую сторону пишущей машинки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top