2013-03-16 109 views
2

如果我有一個字符串$myString = "apple, banana, cherry" 我想將這些數據存入數組,那麼我有兩個選擇。使用str_getcsv有什麼好處?

$myArray = explode(", ", $myString) 

$myArray = str_getcsv($myString) 

都給予同樣的結果。

任何人都可以解釋使用這些方法之一的優勢/劣勢嗎?

我聽說str_getcsv更好,根據PHP手冊「因爲explode()不會正確處理字符串或轉義字符的可能包含部分。」

任何人都可以請一個簡單的例子來解釋這是什麼意思嗎?

感謝

+0

使用更容易理解的版本。對我來說它爆炸了。 – mkaatman 2013-03-16 00:59:31

+2

例如,csv可能包含一個包含逗號的值,但爲了讓逗號不被解析爲字段分隔符,它會被quoation標記封裝,以表示字符串。例如1,字符串,「我的字符串,用逗號」,測試。包含4個不是5的字段 – craig1231 2013-03-16 01:07:04

回答

9

str_getcsv作品的CSV如:

"column 1", "column 2", and the third part 
123, 567, 89 

它解開所有引述部分,並從任何一端剝去的空間。

現在你簡單的爆炸也會做空間修整。但它會失敗/不太可靠的,如果有一些差異在裏面:

1,2,3, 4, 5, 6, 7 

如果您確信有總是一個逗號和每一位經過一個空格,然後explode(", "就足夠了。但str_getcsv更聰明一些。它也允許在報價的分隔符,如手冊暗示暗示:

"column 1 contains a , comma", "col 2 starts here" 

凡簡單的爆炸將不知道對於所包含的逗號和空格的特殊待遇。