Reguläre Ausdrücke in PHP: Was sind sie und wozu braucht man sie?
Reguläre Ausdrücke (regex) sind ein mächtiges Werkzeug zum Suchen, Ersetzen und Überprüfen von Zeichenketten anhand eines Musters. In PHP sind sie über eine Reihe von Funktionen implementiert, die es dem Entwickler ermöglichen, flexibel mit Textdaten zu arbeiten. Für Anfänger mag dieses Thema komplex erscheinen, aber in der Praxis vereinfacht es die Verarbeitung von Formularen, die Validierung von E-Mails, das Parsen von URLs und viele andere Aufgaben erheblich.
In diesem Artikel werden wir die grundlegende Syntax regulärer Ausdrücke in PHP erläutern, die wichtigsten Funktionen vorstellen und für jede davon verständliche Beispiele geben.
1. Grundlagen der Syntax regulärer Ausdrücke
Ein regulärer Ausdruck in PHP ist eine Zeichenkette, die in Begrenzer (meistens in einen Schrägstrich /) eingeschlossen ist. Innerhalb dieser Zeichenkette befinden sich spezielle Zeichen (Metazeichen) und gewöhnliche Zeichen.
Wichtige Metazeichen
.— ein beliebiges Zeichen, außer Zeilenumbruch.^— Anfang der Zeichenkette.$— Ende der Zeichenkette.*— null oder mehr Wiederholungen des vorherigen Zeichens.+— eine oder mehr Wiederholungen.?— null oder eine Wiederholung.\\d— eine beliebige Ziffer (entspricht [0-9]).\\w— ein beliebiger Buchstabe, eine Ziffer oder ein Unterstrich.\\s— ein beliebiges Leerzeichen.[]— Zeichenklasse (z. B. [a-z] — alle Kleinbuchstaben des lateinischen Alphabets).()— Gruppierung.
Beispiel eines einfachen Musters
Angenommen, wir möchten prüfen, ob eine Zeichenkette das Wort "php" enthält. Das einfachste Muster würde so aussehen:
/php/Dieses Muster findet die Teilzeichenkette "php" an jeder Stelle der Zeichenkette (z. B. in "PHP" wird es ohne Berücksichtigung der Groß-/Kleinschreibung nicht gefunden, da die Groß-/Kleinschreibung wichtig ist). Um die Suche unabhängig von der Groß-/Kleinschreibung zu machen, wird der Modifikator i verwendet:
/php/iJetzt stimmt das Muster sowohl mit "PHP", als auch mit "Php" und "php" überein.
2. Wichtige Funktionen für die Arbeit mit regulären Ausdrücken in PHP
PHP bietet mehrere Schlüsselfunktionen. Betrachten wir die drei bekanntesten: preg_match, preg_replace und preg_split.
2.1. preg_match — Prüfung auf Übereinstimmung
Die Funktion preg_match prüft, ob eine Zeichenkette einem Muster entspricht. Sie gibt 1 zurück, wenn eine Übereinstimmung gefunden wurde, andernfalls 0. Man kann auch ein drittes Argument übergeben – ein Array, in das alle gefundenen Übereinstimmungen geschrieben werden.
Beispiel: E-Mail-Validierung
<?php$email = "user@example.com";$pattern = "/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/";
if (preg_match($pattern, $email)) { echo "E-Mail ist korrekt!";} else { echo "E-Mail ist nicht korrekt!";}?>Erklärung des Musters:
^— Anfang der Zeichenkette.[a-zA-Z0-9._-]+— ein oder mehrere Zeichen: lateinische Buchstaben, Ziffern, Punkt, Unterstrich oder Bindestrich.@— das obligatorische "@"-Zeichen.[a-zA-Z0-9.-]+— der Domainname.\\.— ein escapter Punkt.[a-zA-Z]{2,}— die Domainendung (mindestens 2 Buchstaben).$— Ende der Zeichenkette.
2.2. preg_replace — Ersetzung nach Muster
Die Funktion preg_replace sucht nach Übereinstimmungen mit einem Muster und ersetzt sie durch eine angegebene Zeichenkette. Dies ist besonders nützlich zum Bereinigen von Daten oder zum Formatieren von Text.
Beispiel: Entfernen aller Ziffern aus einer Zeichenkette
<?php$text = "Meine Nummer: 123-456-7890";$pattern = "/\\d+/";$replacement = "[ZIFFERN]";
$result = preg_replace($pattern, $replacement, $text);echo $result; // Gibt aus: "Meine Nummer: [ZIFFERN]-[ZIFFERN]-[ZIFFERN]"?>