2016-01-08 3 views
0

Странно PHP Чтение файла CSV, созданного в Excel, в одну строку. Кодекс:php чтение данных csv в одну строку

if ($file) { 
       while (($line = fgets($file)) !== false) { 
        print '<div>'.$line.'</div>'."<br/>"; 
       } 

      } else { 
       // error opening the file. 
      } 

      fclose($file); 

CSV

Name, City 
Jon,Paris 
Doe,Madrid 
+0

Вы можете попробовать мой синтаксический анализатор CSV (специальный для больших данных и по строкам): https://github.com/DeepVarvar/PHP-CSV-Parser-Writer/blob/master/examples/parse-from-file- с-полным-options.php – Deep

ответ

2

Добавить этот код перед чтением файла.

ini_set("auto_detect_line_endings", true); 

При включении, PHP проверяет данные, считываемые fgets() и файл(), чтобы увидеть, если он использует Unix, MS-DOS или Macintosh завершения строк.

Это позволяет PHP взаимодействовать с системами Macintosh, но по умолчанию отключены, так как есть очень небольшое падение производительности при обнаружении условности EOL для первой линии, а также потому, что люди, использующие каретки возвращаются в качестве разделителей под Системы Unix будут работать с обратной совместимостью.

1

Скорее всего, PHP не правильно обнаружения конца строки в файле. Это указывает на документацию fgets.

Вы, вероятно, хотите, чтобы написать такой код:

$oldLineEndings = ini_set('auto_detect_line_endings', true); 

//your while loop here 

ini_set('auto_detect_line_endings', $oldLineEndings); 

Если вам нужно на самом деле разобрать CSV, вы также можете посмотреть на fgetcsv.

Смежные вопросы