Reguläre Ausdrücke in PHP: Ein leistungsstarkes Werkzeug für die Textarbeit
Reguläre Ausdrücke (regex) sind Zeichenfolgen, die ein Muster zum Suchen und Manipulieren von Zeichenketten vorgeben. In PHP werden sie über die PCRE-Bibliothek (Perl Compatible Regular Expressions) implementiert und bieten Entwicklern flexible Möglichkeiten zur Datenvalidierung, Textanalyse und zum Ersetzen von Teilzeichenfolgen. In diesem Artikel werden wir die wichtigsten Funktionen, die Syntax und praktische Beispiele für die Verwendung regulärer Ausdrücke in PHP behandeln.
Wichtige PHP-Funktionen für die Arbeit mit regulären Ausdrücken
In PHP gibt es mehrere Schlüsselfunktionen, die die Arbeit mit regulären Ausdrücken ermöglichen. Betrachten wir die wichtigsten davon.
preg_match() — Suche nach der ersten Übereinstimmung
Die Funktion preg_match() sucht nach der ersten Übereinstimmung mit einem Muster in einer Zeichenkette. Sie gibt 1 zurück, wenn eine Übereinstimmung gefunden wurde, 0, wenn nicht, und FALSE im Fehlerfall.
<?php$text = "Meine E-Mail: example@mail.com und test@domain.org";$pattern = "/[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}/";
if (preg_match($pattern, $text, $matches)) { echo "E-Mail gefunden: " . $matches[0]; // Gibt aus: E-Mail gefunden: example@mail.com}?>preg_match_all() — Suche nach allen Übereinstimmungen
Im Gegensatz zu preg_match() findet diese Funktion alle Übereinstimmungen in einer Zeichenkette und speichert sie in einem mehrdimensionalen Array.
<?php$text = "Meine E-Mail: example@mail.com und test@domain.org";$pattern = "/[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}/";
preg_match_all($pattern, $text, $matches);print_r($matches[0]);// Gibt aus: Array ( [0] => example@mail.com [1] => test@domain.org )?>preg_replace() — Ersetzung nach Muster
Die Funktion preg_replace() ersetzt alle Übereinstimmungen mit einem Muster durch eine angegebene Zeichenkette. Sie unterstützt Rückverweise und Modifikatoren.
<?php$text = "Heute ist der 15.03.2024, und morgen wird der 16.03.2024 sein";$pattern = "/(\\d{2})\\.(\\d{2})\\.(\\d{4})/";$replacement = "$3-$2-$1";
echo preg_replace($pattern, $replacement, $text);// Gibt aus: Heute ist der 2024-03-15, und morgen wird der 2024-03-16 sein?>preg_split() — Aufteilen einer Zeichenkette nach Muster
Die Funktion preg_split() teilt eine Zeichenkette anhand eines angegebenen Musters in ein Array auf. Sie ist ein Analogon zu explode(), jedoch mit Unterstützung für reguläre Ausdrücke.
<?php$text = "Apfel, Birne; Banane: Orange";$pattern = "/[,;: ]+/";
$fruits = preg_split($pattern, $text);print_r($fruits);// Gibt aus: Array ( [0] => Apfel [1] => Birne [2] => Banane [3] => Orange )?>Syntax regulärer Ausdrücke
Reguläre Ausdrücke werden in PHP in Begrenzer eingeschlossen (normalerweise Schrägstriche /) und können nach dem schließenden Begrenzer Modifikatoren enthalten. Betrachten wir die grundlegenden Syntaxelemente.
Metazeichen und Quantoren
- Zeichenklassen:
.(beliebiges Zeichen),\\d(Ziffer),\\w(Buchstabe, Ziffer, Unterstrich),\\s(Leerzeichen) - Quantoren:
*(0 oder mehr),+(1 oder mehr),?(0 oder 1),{n,m}(von n bis m) - Anker:
^(Zeilenanfang),$(Zeilenende),\\b(Wortgrenze) - Gruppierung:
()(Gruppenerfassung),(?:)(nicht erfassende Gruppe) - Alternative:
|(logisches ODER)
Muster-Modifikatoren
i— Groß-/Kleinschreibung-unabhängige Suchem— Mehrzeilenmodus (^ und $ gelten für jede Zeile)s— Metazeichen . schließt Zeilenumbruch einu— Unicode-Unterstützung (erforderlich für die Arbeit mit