【发布时间】:2015-06-07 14:45:39
【问题描述】:
我想拆分以下文本:
“一些文字 [aaa[b[c1][c2]d]e][test] 更多文字”
到嵌套数组中:
Array
(
[0] => aaa[b[c1][c2]d]e
[1] => Array
(
[0] => b[c1][c2]d
[1] => Array
(
[0] => c1
[1] => c2
)
)
[2] => test
)
php 手册中的“recursiveSplit”函数可以很好地显示结果。
函数如下:
function recursiveSplit($string, $layer) {
preg_match_all("#\[(([^\[\]]*|(?R))*)\]#", $string, $matches);
// iterate thru matches and continue recursive split
if (count($matches) > 1) {
for ($i = 0; $i < count($matches[1]); $i++) {
if (is_string($matches[1][$i])) {
if (strlen($matches[1][$i]) > 0) {
echo "<pre>Layer ".$layer.": ".$matches[1][$i]."</pre><br />";
recursiveSplit($matches[1][$i], $layer + 1);
}
}
}
}
}
recursiveSplit($string, 0);
显示如下:
Layer 0: aaa[b[c1][c2]d]e
Layer 1: b[c1][c2]d
Layer 2: c1
Layer 2: c2
Layer 0: test
我无法修改函数以将结果放入数组甚至是简单的字符串。我完全被困住了。有什么想法吗?
【问题讨论】: