使用str_getcsv的好处是什么?

3

如果我有一个字符串 $myString = "apple, banana, cherry",并且我想将这些数据存储到一个数组中,那么我有两种选择。

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

或者

$myArray = str_getcsv($myString)

这两种方法得到的结果是一样的。

有人能解释一下使用其中一种方法的优缺点吗?

听说 str_getcsv 更好,根据 php 手册的说法“因为 explode() 不会正确处理可能被封闭的字符串部分或转义字符。”

有人能给出一个简单的例子并解释一下这是什么意思吗?

谢谢


使用更易理解的版本。对我来说,它是“explode”。 - Matt
2
例如,CSV文件中可能包含一个值,该值包含逗号,但为了使逗号不被解析为字段分隔符,它被引号括起来表示为字符串。例如:1,string,“my string,with a comma”,test。包含4个字段而不是5个。 - craig1231
1个回答

13

str_getcsv 函数可用于处理CSV格式的数据,例如:

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

它展开所有带引号的部分,并从两端删除空格。

现在,您简单的explode功能也可以进行空格修剪。但如果有一些变化,它会失败/不太可靠:

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

如果您确定每个部分之后都有一个逗号和一个空格,那么explode(", "就足够了。但是str_getcsv要聪明一些。正如手册提示的那样,它还允许在引号中使用定界符:

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

普通的分解操作无法意识到包含逗号和空格的特殊处理。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接