2012-12-20 30 views
5

可能重複:
how to extract data from csv file in phpPHP和CSV文件 - 如何檢測行結束?

我在XLS一些數據,我將其保存爲CSV,分隔符是逗號** *。 後來我想從這個CSV文件加載數據:

$input = explode("\r\n", fread($file, filesize("my_data.csv"))); 
print_r($input); 

輸出:

Array ([0] => data from the CSV file) 

這就是問題 - 在陣列永遠只是一個項目,在那裏打印出所有來自CSV文件的數據。這怎麼可能?爲什麼數組中的項沒有CSV文件中的行數多?

此外,我試圖改變"\r\n"爲「\ n」,但它是一樣的。

我正在做的 - 從CSV文件加載每一行,並處理每一行。

實例文件:

a,b,c,d 
e,f,g,h 

OUTPUT:

a,b,c,d e,f,g,h

+2

使用內置的fgetcsv()函數讀取CSV數據 –

+0

您沒有使用的任何原因http://php.net/manual/en/function.fgetcsv.php?不要試圖自己解析CSV數據 - 你會遇到一個痛苦的世界,任何比簡單的數字列表更復雜的事情。 –

+0

但是夥計們,你如何解決排上的最後一項?因爲這最後一項最後有逗號,所以最後一項與第二行的第一項合併。 – user984621

回答

4

我建議使用內置的csv文件閱讀功能fgetcsv() PHP的,而不是創建自己的: http://php.net/manual/en/function.fgetcsv.php

if (($handle = fopen($file, "r")) !== FALSE) { 
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
     $row = implode (",",$data); //puts back together the row from the csv 
     echo $row. "\n"; //assuming you want a visual linebreak on console, add the \n 
    } 
    fclose($handle); 
} 
+0

我不知道它是一個錯誤或者,但是當我嘗試這樣做時,行中的最後一項最終沒有逗號 - 讓我陷入麻煩......因爲我沒有得到預期的輸出。 – user984621

+0

Ray,請檢查OP,這是我得到的輸出結果,如果我將使用此片段 - 將字母'd'和'e'合併爲一個項目。這是我不知道如何解決的整個問題。 – user984621

0

我如何解決這個問題:

在XLS文件,將文件導出爲CSV之前,我在片多一個列的一端與焦炭'增加。