我想用逗号分隔以下字符串。
1,"x1",43,"tr","y,7"
结果数组应如下所示。
[
0 => '1',
1 => '"x1"',
2 => '43',
3 => '"tr"',
4 => '"y,7"'
]
简而言之,如果引号之间有逗号,则不应该考虑逗号。
如果我使用爆炸,我会得到以下结果,这是我不想要的。
[
0 => '1',
1 => '"x1"',
2 => '43',
3 => '"tr"',
4 => '"y',
5 => '7"'
]
我被困在这里,请帮忙。
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"
// }
?>
以下片段:
$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 上可见。
正则表达式
,(?=([^"]*"[^"]*")*[^"]*$)
的意思是:匹配逗号,前提是它前面有零个或偶数个双引号。
简单!!您的字符串是 CSV。
使用
$your_array=str_getcsv($your_string);