Erfassen von Text in eckigen Klammern in PHP
Beim Programmieren stoßen wir oft auf die Notwendigkeit, bestimmte Daten aus einer größeren Zeichenfolge zu extrahieren. Ein häufiges Szenario ist das Erfassen von in eckigen Klammern eingeschlossenem Text, wie im folgenden Beispiel zu sehen ist:
[This] is a [test] string, [eat] my [shorts].
Das Ziel besteht darin, diese Zeichenfolge in ein Array umzuwandeln:
[ '[This]', '[test]', '[eat]', '[shorts]' ]
Während eines Basic Ein regulärer Ausdruck wie /[.*?]/ mag ausreichend erscheinen, er erfasst jedoch nur die erste Instanz von eckigen Klammern. Um die gewünschte Ausgabe zu erzielen, benötigen wir einen modifizierten Ansatz.
Lösung für reguläre Ausdrücke:
Wir können preg_match_all mit einem modifizierten regulären Ausdruck verwenden, um alle Vorkommen von Text darin abzugleichen eckige Klammern. Dies wird durch den folgenden Code erreicht:
preg_match_all("/\[[^\]]*\]/", $text, $matches); var_dump($matches[0]);
Dieser Code verwendet den folgenden regulären Ausdruck:
Alternative Methode zum Entfernen von Klammern:
Wenn wir den Text ohne Klammern extrahieren möchten, können wir den regulären Ausdruck ändern leicht:
preg_match_all("/\[([^\]]*)\]/", $text, $matches); var_dump($matches[1]);
Dieser Code verwendet:
Dritte Option mit Quantifizierer „*“:
Eine alternative, wenn auch langsamere Methode besteht darin, stattdessen den Quantifizierer „*“ zu verwenden „[^]“:
preg_match_all("/\[(.*?)\]/", $text, $matches); var_dump($matches[1]);
Durch die Verwendung dieser regulären Ausdrücke können wir Text in eckigen Klammern effektiv erfassen und uns so die gewünschte Ausgabe liefern, die in der ursprünglichen Problemstellung beschrieben wurde.
Das obige ist der detaillierte Inhalt vonWie kann ich mit PHP in eckigen Klammern eingeschlossenen Text aus einer Zeichenfolge extrahieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!