2011-06-16 65 views
0

(ACCTG)会计的preg_match在括号

文本上面我试图让括号怎么会怎么做,在PHP中,这是我至今为止的信息。

$regex = '#\((([^()]+|(?R))*)\)#'; 
if (preg_match_all($regex, $string ,$matches)) { 
    echo implode(' ', $matches[1]); 
} else { 
    //no parenthesis 
    echo $string; 
} 
+0

使用方便,是什么问题/问题?什么不行?有错误吗? – NikiC 2011-06-16 20:37:08

+0

@nikic我得到它现在的工作,不要奇怪 – Alex 2011-06-16 20:38:41

回答

1

我将特殊字符为十六进制在我的正则表达式的

<? 
$input = 'abc ("an example")'; 
if(preg_match("/\x28([^\x29]+)\x29/", $input, $matched)) { 
    //...   
    print_r($matched); 
} else { 
    //do something.. 
} 
?> 
1

这是不是足够:

\(([^\)]*)\).* 
+0

如果括号可以嵌套,则不应该。 (例如,类似的东西(圆括号内的圆括号)会破坏你的表达。) – cHao 2011-06-17 14:47:37

+0

确切地说,但OP给出的问题看起来更像是括号内部门的代码。接下来的问题是,如何处理不匹配的括号。像'(AS(AS)Something'或'(DB))E)Deparment DBE'一样 – Hyperboreus 2011-06-17 14:52:20