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'文件,它的格式與我的不同。 –