【问题标题】:What is the advantage of using str_getcsv?使用 str_getcsv 有什么好处?
【发布时间】:2013-03-16 00:55:08
【问题描述】:

如果我有一个字符串$myString = "apple, banana, cherry" 我想把这些数据放到一个数组中,那么我有两个选择。

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

或

$myArray = str_getcsv($myString)

两者都给出相同的结果。

谁能解释使用其中一种方法相对于另一种方法的优缺点?

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

谁能通过一个简单的例子解释一下这是什么意思?

谢谢

【问题讨论】:

  • 使用更容易理解的版本。对我来说它爆炸了。
  • 例如,csv 可能包含一个包含逗号的值,但为了不将逗号解析为字段分隔符,它用引号封装,以表示字符串。例如 1,string,"my string,with a comma",test。包含 4 个字段而不是 5 个

标签: php string csv escaping


【解决方案1】:

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"

简单的爆炸不会意识到对包含的逗号和空格的特殊处理。

【讨论】:

    猜你喜欢
    • 2012-11-28
    • 2010-09-21
    • 2011-04-28
    • 1970-01-01
    • 2011-09-16
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多