【问题标题】:Split a comma-delimited string (containing values which also contain commas) [duplicate]拆分逗号分隔的字符串(包含也包含逗号的值)[重复]
【发布时间】:2011-08-24 22:51:57
【问题描述】:

可能重复:
An explode() function that ignores characters inside quotes?

我有一个示例问题。这是

$str = 'field0,field1,field2,"field3a,field3b,field3c",field4,"field5"';

我想把那个字符串分解成这样的数组

$arr[0] = 'field0';
$arr[1] = 'field1';
$arr[2] = 'field2';
$arr[3] = 'field3a,field3b,field3c';
$arr[4] = 'field4';
$arr[5] = 'field5';

【问题讨论】:

标签: php preg-replace explode


【解决方案1】:
$str = 'field0,field1,field2,"field3a,field3b,field3c",field4,"field5"';
$result = str_getcsv($str, ",", "\"");
print_r($result);

打印:

Array
(
    [0] => field0
    [1] => field1
    [2] => field2
    [3] => field3a,field3b,field3c
    [4] => field4
    [5] => field5
)

【讨论】:

    【解决方案2】:

    使用马里奥的建议:str_getcsv($str, ',', '"');

    【讨论】:

    • 我错过了您示例字符串中的双引号,对 Quy 的回答竖起大拇指。
    • field3a、field3b 和 field3c 是示例。可以是任意词,也可以是 3 个以上的词
    • 抱歉,我的意思是要对马里奥的评论竖起大拇指。查看 str_getcsv。只需将逗号作为参数传递,将 " 作为附件参数传递,它就会自动以你想要的方式将数据解析为数组。
    • 这不是答案。它是对页面上另一个帖子的引用,应该完全删除。
    • 实际上,不,它是对评论的引用。第二天,提供了基本相同的答案(如果在输入 btw 上测试,我的答案有效)并收到 2 个赞成票,除了用于参数的引用风格(我的更干净 imnsho)之外没有任何区别。一段时间后,由于发现了一些相关的重复项,该问题被关闭,这是可以理解的,但考虑到可能描述此问题的多种方式,为了将来的搜索结果,可能应该保持原样。
    猜你喜欢
    • 2012-11-12
    • 2016-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    • 2010-10-23
    • 2015-11-28
    相关资源
    最近更新 更多