2009-08-26 32 views
8

Si tengo una cadena como esta:php: eliminar corchetes/contenidos de una cadena?

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

Como puedo regex para que la salida es:

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

Tiene que ser capaz de soportar cualquier número de pares de soportes dentro de una cadena.

Respuesta

36

Esto debería hacer el truco:

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

Nota, esta respuesta quita espacio en blanco alrededor del soporte también, a diferencia de las otras sugerencias.

El ajuste es en caso de que la cuerda comience con una sección entre corchetes, en cuyo caso no se eliminará el espacio en blanco que lo sigue.

+0

Tenga en cuenta que esto se romperá para "(())" o cualquier paréntesis desbalanceado, pero eso puede no ser un problema. – Mark

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

Prueba esto:

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