2016-01-08 28 views
0

這很奇怪PHP將我的Excel生成的CSV文件讀取到一行中。代碼是: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