2010-11-22 7 views
1
$item = "(1) Robin Hood (hero)"; 

Le texte entre parenthèses peut être modifié.Supprimer() de la chaîne

Comment puis-je supprimer toutes les parenthèses avec du texte à l'intérieur de ces chaînes?

Nous devrions obtenir ceci:

$item = "Robin Hood"; 

Merci!

Répondre

6

Vous pouvez utiliser preg_replace comme:

$item = preg_replace('/\(.*?\)/s','',$item); 

On dirait que vous voulez aussi supprimer les espaces de fuite après le remplacement.
Vous pouvez utiliser des trim pour que:

$item = trim(preg_replace('/\(.*?\)/s','',$item)); 

Le regex utilisé est \(.*?\):

  • ( et ) sont des méta-caractères regex utilisés pour le regroupement. Pour correspondre litérale paranthesis vous devez les échapper en les précédant avec un \.
  • Vous mettez en correspondance n'importe quel texte entre la parenthèse en utilisant .*?. Vous pouvez également faire la même chose en utilisant [^)]*
  • . par défaut ne correspond pas à newline. Pour faire est correspondre à une nouvelle ligne nous utilisons le modificateur s. Sans elle nous manquera pas de faire le remplacement dans "(hello\nworld) Hi"
+1

Quelle est la différence entre la vôtre et la solution de stillstanding? – James

+0

@Happy: J'ai mis à jour par la poste. – codaddict

+0

Pourquoi '. *?'? Est-ce que '. * 'Ne fonctionnerait pas aussi bien? ('.' correspond à un caractère,' * 'répète le spécificateur zéro ou plusieurs fois, puis'? 'pour qu'il corresponde ou non à ces caractères.) –

Questions connexes