Wie kann ich mit PHP in eckigen Klammern eingeschlossenen Text aus einer Zeichenfolge extrahieren?

Barbara Streisand
Freigeben: 2024-11-26 20:29:10
Original
702 Leute haben es durchsucht

How Can I Extract Text Enclosed in Square Brackets from a String Using PHP?

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].
Nach dem Login kopieren

Das Ziel besteht darin, diese Zeichenfolge in ein Array umzuwandeln:

[
  '[This]',
  '[test]',
  '[eat]',
  '[shorts]'
]
Nach dem Login kopieren

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]);
Nach dem Login kopieren

Dieser Code verwendet den folgenden regulären Ausdruck:

  • /[/: Entspricht der öffnenden eckigen Klammer.
  • [^]]*: Entspricht allen Zeichen außer dem schließenden Quadrat Klammer.
  • /]/: Entspricht der schließenden eckigen Klammer.

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]);
Nach dem Login kopieren

Dieser Code verwendet:

  • /[/: Entspricht der öffnenden eckigen Klammer.
  • ( [^]]*): Erfasst alle Zeichen außer dem schließenden Quadrat Klammer.
  • /]/: Entspricht der schließenden eckigen Klammer.

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]);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage