2009-08-26 490 views
8

如果我有這樣的字符串:php:從字符串中刪除括號/內容?

$str = "blah blah blah (a) (b) blah blah blah"; 

我怎麼能正則表達式,從而使輸出爲:

$str = "blah blah blah blah blah blah"; 

它需要能夠支持在字符串中任意數量的支架對。

回答

36

這應該做的伎倆:

$str = trim(preg_replace('/\s*\([^)]*\)/', '', $str)); 

注意,這個答案移除支架周圍的空白太多,不像其他建議。

修剪是爲了防止字符串以括號開頭部分開頭,在這種情況下,它後面的空白不會被刪除。

+0

請注意,這將打破「(())」或任何不平衡的括號,但這可能不成問題。 – Mark 2010-01-22 13:37:38

1
$string = preg_replace('~\(.*?\)~', '', $string); 
3

試試這個:

preg_replace('/\([^)]*\)|[()]/', '', $str)