2009-08-26 18 views
8

Se ho una stringa del tipo:php: rimuovi parentesi/contenuti da una stringa?

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

Come posso regex in modo che l'uscita è:

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

Deve essere in grado di supportare qualsiasi numero di coppie di parentesi all'interno di una stringa.

risposta

36

Questo dovrebbe fare il trucco:

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

Nota, questa risposta rimuove gli spazi bianchi intorno alla staffa di troppo, a differenza degli altri suggerimenti.

Il trim è nel caso in cui la stringa inizi con una sezione a forcella, nel qual caso lo spazio vuoto che segue non viene rimosso.

+0

Si noti che questo si interromperà per "(())" o qualsiasi parentesi non bilanciata, ma potrebbe non essere un problema. – Mark

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

Prova questo:

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