標籤:blog http os io 檔案 ar html line
原型 fgetcsv(resource fp, int length [, string delimiter [, string enclosure [, string escape]]])
對於enclosure的解釋是圍繞欄位的字元。
參考http://blog.ifeeline.com/217.html的說明:
包含逗號, 雙引號, 或是分行符號的欄位必須放在引號內(只有三個特殊值時需要特別處理)。
欄位內部的引號必須在其前面增加一個引號來實現引號的轉碼。
分隔字元逗號前後的空格 可能不會被修剪掉。
元素中的分行符號將被保留下來。
對應於下面例子,就會比較容易理解上述說明了。
欄位1 欄位2 欄位3
goog veture"vision,good" abc
對於上面一行的三個欄位,假如我想用fgetscv()把它讀出來並存到array去,就必須對csv檔案中儲存的格式進行限定。
csv儲存的內容有l兩種情況:
(1)情況一, 直接是goog,veture"vision,good",abc
這樣你會發現get出來的不是你想要的東西。其array輸出是
Array ( [0] => goog [1] => vetur"evision [2] => good" [3] => abc )
(2)情況二,csv裡的內容是goog,"veture""vision,good""",abc
這是根據上面的說明對原有內容進行修改過的。加上了圍繞字元雙引號。
其array輸出是我們想要的
Array ( [0] => goog [1] => veture"vision,good" [2] => abc )
對於上面說明的一些補充,若欄位內含有逗號,僅需將該欄位用雙引號括住即可,無需再在逗號前面加雙引號。
另外,對於最後一個參數escape,官方解釋是設定逸出字元。對此不太理解,希望有人可以提供例子進行解釋。