2015-04-23 52 views
2

我有一個非常奇怪的問題,那就是fgtcsv()。看看這段代碼fgetcsv()錯誤地將雙引號添加到第一行的第一個元素

$csv_check = fopen(CSV_DIR.$this->db_table.".csv","r"); 
    $data = fgetcsv($csv_check, 1000, $this->fields_terminated_by); 
    fclose($csv_check); 

一的print_r($數據)輸出以下:

array (
0 => '"program_id"', 
1 => 'program_name', 
2 => 'program_logo', 
) 

奇怪的是,$數據[0]這裏是雙引號括起來......在這個CSV文件原線看起來是這樣的:

"program_id";"program_name";"program_logo" 

我不明白這一點在所有...計數的$的字符[0] strlen的數據($ DATA [0])返回15,即使錯誤地引用,它必須是12個字符...我非常震驚......!

任何想法?!?

+2

csv文件是否具有BOM標頭?如果是這樣,那麼它很可能被視爲數據的一部分,這意味着報價也是數據的一部分,因爲第一個報價發生在BOM報頭後面,因此不被視爲機櫃報價 –

+0

就是這樣@MarkBaker。謝謝! – Dong3000

+0

剛剛遇到這個問題。什麼是BOM表頭?你是如何解決這個問題的? –

回答

0

我知道這是一個古老的話題,但有人可能會像我一樣來試圖找出解決方案,下面是如何解決它。

打開記事本(在我的情況下,我用記事本++)並創建一個新文件。
複製/粘貼新文件中的所有數據。
將其另存爲「所有類型」並自行添加「.csv」。
該文件應保存在沒有BOM的情況下,並且您可以使用PHP讀取您的CSV文件進行處理。

相關問題