1
我试图让每个嵌套方括号分离到他们自己的部分,也复发,如果有任何sub ests或方括号,例如,我想转:与键和值的嵌套括号,PHP
[a % 1][b % [a % 2]][c % 3]
分为:
Array
(
[a] => 1
[b] => Array
(
[a] => 2
)
[c] => 3
)
编辑,1
我想我真正想要做的是:
转到:
[a % 1][b % [a % 2]][c % 3]
到像这样的数组:
Array
(
[0] => a % 1
[1] => b % [ a % 2 ]
[2] => c % 3
)
使用PHP。但是,我regExp没有工作:/\[(.*)\]/
我知道可能有办法做到这一点,但我不知道如何。
这里是我的代码,它的作品不错,经常性,但它把第一个例子,分为:
Array
(
[a] => 1
[b] => [a%2
[c] => 3
)
这里是我的代码:
function comparse($txt)
{
$arrg = [];
$bracks = "/\[(.*)\]/";
if(preg_match($bracks,$txt))
{
preg_match_all($bracks,$txt,$matches);
foreach($matches[1] as $match)
{
$spl = explode("%",$match,2);
$arrg[$spl[0]] = comparse($spl[1]);
}
}else{
$arrg = $txt;
}
return $arrg;
}
print_r(comparse($str));
也许一个**词法分析器**是你在找什么,看到这个[类似的问题在这里](http://stackoverflow.com/questions/35426793/parsing-a-string-with-recursive-括号/ 35430032#35430032)。 – Jan
尽管我很喜欢它的工作原理,但它适用于'CSV'文件,它的格式与我的不同。 –