我想用逗号分隔后面的字符串。
1,"x1",43,"tr","y,7"
结果数组应如下所示。
0=>1
1=>"x1"
2=>43
3=>"tr"
4=>"y,7"
简而言之,它不应该考虑逗号是否在引号之间。
如果我使用爆炸,我会得到以下结果,这是我不想要的。
[4:58:20 PM] Mihir Dhandha: 0=>1
1=>"x1"
2=>43
3=>"tr"
4=>"y
5=>7"
我被困在这里,请帮助。
答案 0 :(得分:3)
尝试str_getcsv
:
<?php
$s = '1,"x1",43,"tr","y,7"';
$result = str_getcsv($s);
var_dump($result);
echo "\n";
// array(5) {
// [0]=>
// string(1) "1"
// [1]=>
// string(2) "x1"
// [2]=>
// string(2) "43"
// [3]=>
// string(2) "tr"
// [4]=>
// string(3) "y,7"
// }
?>
答案 1 :(得分:2)
以下代码段:
$s = '1,"x1",43,"tr","y,7"';
print_r(preg_split('/,(?=([^"]*"[^"]*")*[^"]*$)/', $s));
产生
Array
(
[0] => 1
[1] => "x1"
[2] => 43
[3] => "tr"
[4] => "y,7"
)
可以在ideone上看到。
正则表达式,(?=([^"]*"[^"]*")*[^"]*$)
表示:匹配逗号,只有它有零或前面有偶数双引号。
答案 2 :(得分:1)
易于!!您的字符串是CSV。
使用$your_array=str_getcsv($your_string);