php – 获取方括号的内容,避免使用嵌套括号

(第一次海报,谷歌的长期访客)

我正在尝试提取一些方括号的内容,但是我有一点麻烦.我已经让它适用于圆括号,如下所示,但我看不出它应该如何修改以适用于方括号.我本以为在这个例子中替换正方形的圆形反之亦然,但显然不行.

它需要忽略括号内的括号.所以它不会返回(11)但会返回(10(11)12).

$preg = '#\(((?>[^()]+)|(?R))*\)#x';
$str = '123(456)(789)(10(11)12)';

if(preg_match_all($preg, $str, $matches)) {
    $matches = $matches[0];
} else {
    $matches = array();
}

echo '<pre>'.print_r($matches,true).'</pre>';

This returns:

Array (
    [0] => (456)
    [1] => (789)
    [2] => (10(11)12)
)

哪个是完美的.但是,我怎样才能使用带方括号的字符串,例如:

$str = '123[456][789][10[11]12]'; 

解决方法:

$preg = '#\[((?>[^\[\]]+)|(?R))*\]#x';
上一篇:添加和连接时PHP很困惑


下一篇:【JavaScript基础】图片切换