Extrahieren von Text in eckigen Klammern in PHP
Die Herausforderung, Text in eckigen Klammern in PHP zu erfassen, erfordert einen differenzierten Ansatz. Ein üblicher Versuch, /[.*?]/ als regulären Ausdruck zu verwenden, ruft nur die erste Instanz ab und führt zu einem unvollständigen Ergebnis.
Erfassen des Gehäuses:
Um diese Einschränkung zu umgehen, verwenden Sie reguläre Ausdrücke, die den gesamten Text in eckigen Klammern umfassen. Betrachten Sie das Muster:
$text = '[This] is a [test] string, [eat] my [shorts].'; preg_match_all("/\[[^\]]*\]/", $text, $matches);
Hier fungiert /[1]/ als regulärer Ausdruck, der jeder in eckigen Klammern eingeschlossenen Zeichenfolge entspricht. Das Caret-Zeichen (^) entspricht dem Anfang der Zeichenfolge, gefolgt von einer Klammer. Der Teil 2 bezeichnet ein Zeichen, das keine Klammer ist. Das Sternchen () stimmt mit einer beliebigen Anzahl von Vorkommen überein und die abschließende Klammer schließt das Muster ab.
Das Ausführen dieses regulären Ausdrucks auf den bereitgestellten Text führt zu Folgendem:
Array ( [0] => [This] [1] => [test] [2] => [eat] [3] => [shorts] )
Den darin enthaltenen Text erfassen:
Alternativ möchten Sie möglicherweise den Text ohne Klammern extrahieren. Dies erfordert eine modifizierte Regex:
$text = '[This] is a [test] string, [eat] my [shorts].'; preg_match_all("/\[([^\]]*)\]/", $text, $matches);
In dieser Regex erfasst (3*) jedes Zeichen in eckigen Klammern, wodurch die Klammern effektiv aus der Ausgabe entfernt werden. Sie erhalten:
Array ( [0] => This [1] => test [2] => eat [3] => shorts )
Denken Sie daran, dass dieser reguläre Ausdruck davon ausgeht, dass eckige Klammern nicht im Text verschachtelt sind.
Das obige ist der detaillierte Inhalt vonWie extrahiere ich in eckigen Klammern eingeschlossenen Text mit regulären PHP-Ausdrücken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!