Entfernen Sie den Text Zwischen Klammern, PHP
Ich Frage mich nur, wie konnte ich entfernen Sie den text zwischen einer Reihe von Klammern und die Klammern selbst in php.
Beispiel :
ABC (Test1)
Ich möchte es löschen (Test1) und nur verlassen, ABC
Dank
InformationsquelleAutor Belgin Fish | 2010-02-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
preg_replace
ist eine perl-basierte reguläre Ausdrücke ersetzen-routine. Was dieses Skript tut, ist findet alle vorkommen einer öffnenden Klammer, gefolgt von einer beliebigen Anzahl von Zeichen nicht eine schließende Klammer, und wieder gefolgt von einer schließenden Klammer, und dann löscht Sie:Regulären Ausdruck Aufteilung:
leider ist dies nicht entfernen, verschachtelte Klammern wie
A (B (C) D)
und lässt Sie mitA D
Wenn man den Umgang mit text (wie entfernen Sie diese aus der Mitte von meinem Kommentar) - dann ist diese Funktion in Ordnung ist. Geschachtelte Klammern sind in der Regel nicht gesehen in text-strings, zumindest nicht in Englisch, aber in mathematischen Gleichungen.
Danke für deine kurze Zusammenfassung 🙂
InformationsquelleAutor cmptrgeekken
Die akzeptierte Antwort, die großen Werke für die nicht-verschachtelte Klammern. Eine geringfügige änderung der regex ermöglicht die Arbeit mit verschachtelten Klammern.
InformationsquelleAutor Tegan Snyder
ohne regex
InformationsquelleAutor ghostdog74
Es funktioniert, indem die Schleife durch jedes Zeichen, das zählen von Klammern. Nur wenn
$paren_num == 0
(wenn es außerhalb aller Klammern), hat es die Zeichen anfügen, um unsere resultierenden string$new_string
.InformationsquelleAutor tyjkenn
Leute, reguläre Ausdrücke können NICHT verwendet werden, um zu analysieren, nicht-reguläre Sprachen. Nicht-reguläre Sprachen sind diejenigen, die erfordern, dass der Staat zu interpretieren (d.h. sich zu erinnern, wie viele Klammern geöffnet sind).
Alle der oben genannten Antwort wird nicht auf dieser string: "ABC (hello (world) wie sind Sie)".
Lesen Jeff Atwood Parsen von Html Die Cthulhu Art: https://blog.codinghorror.com/parsing-html-the-cthulhu-way/, und verwenden Sie dann entweder eine von hand geschriebene parser (Schleife über die Zeichen im string sehen, wenn die Zeichen eine Klammer oder nicht, halten Sie einen Stapel) oder verwenden Sie ein lexer/parser in der Lage Parsen, eine Kontext-freie Sprache.
Siehe auch diesen wikipedia-Artikel über die "Sprache der korrekt abgestimmt Klammer:" https://en.wikipedia.org/wiki/Dyck_language
\(([^()]*+|(?R))*\)
entspricht, beliebig geschachtelten Klammern in Ordnung.Gute Beschreibung. Umfangreiche info zum Thema: php.net/manual/en/regexp.reference.recursive.php
InformationsquelleAutor Alex Weinstein
Meisten quik-Methode (ohne Schwangerschaft):
Wenn Sie nicht möchten, zu trimmen Leerzeichen am Ende des Wortes, entfernen Sie einfach die trim-Funktion von code.
InformationsquelleAutor MERT DOĞAN
InformationsquelleAutor Naga