2011-06-16 64 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