2013-03-16 114 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" 

凡简单的爆炸将不知道对于所包含的逗号和空格的特殊待遇。