2012-06-22 31 views
2

我在php-csv中出現了'新行'這個常見問題,這讓我瘋狂!我查了很多論壇,並嘗試了不同的解決方法,但似乎沒有解決問題。我正在讀取一個CSV文件,其中有1個標題和2個數據記錄。我使用fgets()跳過標題並使用$data=fgetcsv()讀取數據記錄。現在問題是兩個數據記錄都被讀入單個數組中。我想下面的選項,但一切都是徒勞:php新行未在csv中檢測到

  1. 運行 - ini_set("auto_detect_line_endings", true);
  2. 轉身auto_detect_line_endings爲 'ON' 在php.ini中。
  3. 試圖fwrite($handle, implode($delimiter,$fieldsarray).PHP_EOL);

我工作的甲基苯丙胺在本地,在LAMP開發區域。 CSVs保存在本地機器上,複製到/ tmp /文件夾並從那裏讀取。如何檢查文件中是否有必要的換行符?當我從tmp檢查文件時,我確實看到了新行中的記錄。

+1

如果是行尾,那麼第一個與fgets會發出聲音的整個文件 - fgetcsv只是增加了額外的csv->陣列內部與fgets()調用讀取行之後解析。 –

+0

似乎你的換行符問題也傳播到了SO。 – Alexander

+0

你可以在你的csv文件中發佈行嗎? – Rachael

回答

3

下面的解決方案工作!

$file_contents = file_get_contents($temp); 
$file_cont_new = str_replace("\n","\r",$file_contents); 
file_put_contents($temp,$file_cont_new); 
+1

如果不是'str_replace(「\ r」,「\ n」,$ file_contents);' 如果有\ r \ n比你會得到一個空行。所以解決方法是 '$ file_cont_new = str_replace(「\ n \ r」,「\ n」,$ file_contents); $ file_cont_new = str_replace(「\ n \ r」,「\ n」,$ file_contents); $ file_cont_new = str_replace(「\ r」,「\ n」,$ file_contents);' – corban

+0

@corban,存在問題 - 重新使用$ file_contents。後面的命令應該使用$ file_cont_new。另外,可以通過先dong最後一個來簡化,然後用一個較少的行來簡單地替換(「\ n \ n」)的所有出現。 –