【发布时间】:2016-06-15 13:38:04
【问题描述】:
我试图将每个嵌套的方括号分成它们自己的部分,并且如果有任何子或方括号也会重复出现,例如,我正在尝试转:
[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));
【问题讨论】:
-
也许 lexer 是您正在寻找的东西,请参阅similar question here on SO。
-
尽管我希望它能够正常工作,但它适用于
CSV文件,与我的格式有点不同。
标签: php regex preg-match preg-match-all