PHP将两个字符之间的字符串分解为数组?(没有问题)



你好:(我是PHP的初学者。我试了好几次,但没有成功

我想解析一个字符串,如下所示:[1,[01,11,12],[20,21,22]]

`
arr[0][0]=>1
arr[1][0]=>01
arr[1][1]=>11
arr[1][2]=>12
arr[2][0]=>20
arr[2][1]=>21
arr[2][2]=>22
`

您可以使用带有preg_split:的正则表达式(受此答案启发(将字符串拆分为未被[]包围的逗号

,(?![^[]*])

然后从结果部分中修剪周围的CCD_ 5和CCD_。例如:

$string = '[1,[01,11,12] ,4 ,5, [20,21,22]]';
$parts = preg_split('/,(?![^[]*])/', $string, -1, PREG_SPLIT_DELIM_CAPTURE);
$output = array();
foreach ($parts as $part) {
$part = trim($part, '[] ');
$output[] = explode(',', $part);
}
print_r($output);

输出:

Array
(
[0] => Array
(
[0] => 1
)
[1] => Array
(
[0] => 01
[1] => 11
[2] => 12
)
[2] => Array
(
[0] => 4
)
[3] => Array
(
[0] => 5
)
[4] => Array
(
[0] => 20
[1] => 21
[2] => 22
)
)

3v4l.org 上的演示

如果您对字符串的来源和安全性有100%的把握,也可以使用eval:

eval("$output = $string;");

结果是一样的。

最新更新