Reguläre Ausdrücke in PHP: Von den Grundlagen bis zu fortgeschrittenen Techniken
Reguläre Ausdrücke (regex) sind ein leistungsstarkes Werkzeug zum Suchen, Ersetzen und Analysieren von Textdaten. In PHP werden sie durch eine Reihe von PCRE-Funktionen (Perl Compatible Regular Expressions) implementiert. In diesem Artikel behandeln wir die Grundlagen der Arbeit mit regulären Ausdrücken, betrachten die wichtigsten Funktionen und geben praktische Beispiele, die Ihnen helfen, die Textverarbeitung zu automatisieren.
1. Grundlegende Funktionen für die Arbeit mit regulären Ausdrücken in PHP
PHP bietet mehrere eingebaute Funktionen für die Arbeit mit regulären Ausdrücken. Betrachten wir die gängigsten davon.
preg_match() — Suche nach einer Übereinstimmung
Die Funktion preg_match() prüft, ob eine Zeichenkette einem bestimmten Muster entspricht. Sie gibt 1 zurück, wenn eine Übereinstimmung gefunden wurde, andernfalls 0.
<?php$text = "Hallo Welt! PHP ist cool.";$pattern = "/PHP/";
if (preg_match($pattern, $text)) { echo "Das Wort 'PHP' wurde gefunden!";} else { echo "Keine Übereinstimmungen.";}?>Wenn Sie die Übereinstimmung selbst erhalten möchten, übergeben Sie ein drittes Argument – ein Array für die Ergebnisse:
<?php$text = "Meine E-Mail: user@example.com";$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];}?>preg_replace() — Ersetzung nach Muster
Die Funktion preg_replace() ersetzt alle Übereinstimmungen mit einem Muster durch eine angegebene Zeichenkette. Sie ist das Analogon zu str_replace(), jedoch mit Unterstützung für reguläre Ausdrücke.
<?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"; // Teile des Datums umstellen
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
Die Funktion preg_split() teilt eine Zeichenkette anhand eines regulären Ausdrucks. Dies ist praktischer als explode(), wenn die Trennzeichen unterschiedlich sein können.
<?php$text = "Apfel, Birne; Banane: Orange";$pattern = "/[,;:]/"; // Trennzeichen: Komma, Semikolon, Doppelpunkt$fruits = preg_split($pattern, $text);
print_r($fruits);// Array ( [0] => Apfel [1] => Birne [2] => Banane [3] => Orange )?>2. Metazeichen und Syntax regulärer Ausdrücke
Um reguläre Ausdrücke effektiv nutzen zu können, müssen Sie deren Syntax verstehen. Hier sind die wichtigsten Metazeichen:
.— ein beliebiges Zeichen (außer Zeilenumbruch)^— Anfang der Zeichenkette$— Ende der Zeichenkette*— 0 oder mehr Wiederholungen+— 1 oder mehr Wiederholungen?— 0 oder 1 Wiederholung\\d— Ziffer (0-9)\\w— Buchstabe, Ziffer oder Unterstrich\\s— Leerzeichen[abc]— ein beliebiges Zeichen aus der Menge(...)— Erfassungsgruppe
Beispiel: Überprüfung einer Telefonnummer
<?php$phone = "+7 (123) 456-78-90";$pattern = "/^\\+7\\s\\(\\d{3}\\)\\s\\d{3}-\\d{2}-\\d{2}$/";
if (preg_match($pattern, $phone)) { echo "Telefonnummer ist korrekt!";} else { echo "Ungültiges Format der Telefonnummer.";}?>3. Fortgeschrittene Techniken und Modifikatoren
Modifikatoren verändern das Verhalten eines regulären Ausdrucks. Sie werden nach dem schließenden Schrägstrich angegeben. Betrachten wir die nützlichsten:
i— Groß-/Kleinschreibung-unabhängige Suchem— Mehrzeilenmodus (^ und $ funktionieren für jede Zeile)s— Der Punkt schließt das Zeilenumbruchzeichen einu— Unterstützung für UTF-8