php函數fgetcsv()中的參數enclosure的解讀

來源:互聯網
上載者:User

標籤: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,官方解釋是設定逸出字元。對此不太理解,希望有人可以提供例子進行解釋。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.