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

Text in Klammern kann geändert werden.Entfernen() von der Zeichenfolge

Wie kann ich alle Klammern mit Text in sie aus dem String entfernen?

Wir sollten diese:

$item = "Robin Hood"; 

Dank!

Antwort

6

können Sie verwenden preg_replace als:

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

Sieht aus wie Sie auch nach dem Austausch führende und nachfolgende Leerzeichen entfernen möchten.
Sie können von trim dafür, wie machen:

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

Die Regex verwendete \(.*?\):

  • ( und ) sind Regex Metazeichen zur Gruppierung verwendet. Um die wörtliche Paranthesis zu entsprechen, müssen Sie sie durch vorangehende mit einem \ entkommen lassen.
  • Sie können jeden beliebigen Text zwischen die Klammer mit .*?. Sie könnte auch das gleiche tun mit [^)]*
  • . entspricht standardmäßig nicht newline. Um einen neuen Zeilenumbruch zu erzeugen, verwenden wir den Modifikator s. Ohne sie würden es uns nicht gelingen, den Ersatz in "(hello\nworld) Hi"
+1

was ist der Unterschied zwischen Ihnen und stillstanding-Lösung zu tun? – James

+0

@Happy: Ich habe per Post aktualisiert. – codaddict

+0

Warum?. *? '? Würde nicht einfach '. *' Genauso gut funktionieren? ('.' passt auf ein beliebiges Zeichen,' * 'wiederholt den Spezifizierer null oder mehrmals, dann'? ', um zu bestimmen, ob diese null oder mehr Zeichen vorhanden sind oder nicht.) –