我正在處理一個CSV文件和PHP5,但是我不完全理解我所看到的。該文件是當我在一個文本編輯器打開它,如下所示:Fgetcsv初始行讀取
"Jun 23,2010 21:40","City1","Location1","0 0 0 "
"Jun 23,2010 21:41","City2","Location1","0 0 0 "
我得到了來自該代碼的輸出:
while (($data = fgetcsv($handle, 1000, ",","\"")) !== FALSE) {
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
這是輸出:
5 fields in line 1:
"Jun 23
2010 21:40"
City1
Location1
0 0 0
4 fields in line 2:
Jun 23,2010 21:41
City2
Location1
0 0 0
如您所見,在第一行fgetcsv跳過外殼字符並將逗號讀作第一個字段,而第二個字段ne正確讀取,然後在所有行之後進行讀取。
所以我錯過了什麼,或者這是一個錯誤,如果它是一個錯誤,除了重寫原始文件之外,什麼是一些可能的解決方案?
經過檢查圍繞代碼,我認爲你是對的,並且在實際文件中可能會搞砸fgetcsv。我複製並粘貼整個文件在一個文本編輯器到一個新的文件,跑了,沒有問題。該文件正在由iMacoros腳本編寫,並以某種方式混淆了二進制級別的格式,因爲在文本中它們看起來完全相同。 – ruskiar 2010-07-02 21:27:01
挖掘更多一點,事實證明fgetcsv不喜歡UTF-8編碼,所以在一個小文件轉換後,一切都像一個魅力。 – ruskiar 2010-07-02 21:53:47