Reguläre Ausdrücke in PHP mit Beispielen: in der Praxis

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Reguläre Ausdrücke in PHP: von der Theorie zur Praxis

\n\n

Reguläre Ausdrücke (regex oder regexp) sind ein leistungsstarkes Werkzeug zum Suchen, Ersetzen und Überprüfen von Zeichenketten nach einem vorgegebenen Muster. In PHP werden sie über eine Reihe von PCRE-Funktionen (Perl Compatible Regular Expressions) implementiert und ermöglichen die Lösung von Aufgaben jeder Komplexität: von der E-Mail-Validierung bis zum Parsen von HTML-Code. In diesem Artikel analysieren wir die Syntax, die grundlegenden Funktionen und betrachten praktische Beispiele, die jedem PHP-Entwickler nützlich sein werden.

\n\n

1. Grundlagen der Syntax regulärer Ausdrücke in PHP

\n\n

Jeder reguläre Ausdruck in PHP wird in Begrenzer (normalerweise Schrägstriche /) eingeschlossen. Nach dem schließenden Begrenzer können Modifikatoren angegeben werden – Flags, die das Suchverhalten ändern.

\n\n
$pattern = '/muster/modifikatoren';
\n\n

Wichtige Metazeichen:

\n
    \n
  • . — ein beliebiges einzelnes Zeichen (außer Zeilenumbruch)
  • \n
  • * — null oder mehr Wiederholungen des vorherigen Zeichens
  • \n
  • + — eine oder mehr Wiederholungen
  • \n
  • ? — null oder eine Wiederholung (macht den Quantifizierer gierig)
  • \n
  • ^ — Zeilenanfang
  • \n
  • $ — Zeilenende
  • \n
  • \\d — Ziffer (0-9)
  • \n
  • \\w — Buchstabe, Ziffer oder Unterstrich
  • \n
  • \\s — Leerraumzeichen
  • \n
  • [] — Zeichenklasse (z. B. [a-z])
  • \n
  • () — Gruppe zum Erfassen
  • \n
\n\n

Beliebte Modifikatoren:

\n
    \n
  • i — Groß-/Kleinschreibung ignorieren
  • \n
  • m — mehrzeiliger Modus (^ und $ gelten für jede Zeile)
  • \n
  • u — UTF-8-Unterstützung (obligatorisch für Kyrillisch)
  • \n
  • s — Punkt erfasst auch Zeilenumbrüche
  • \n
\n\n

2. Die Funktion preg_match(): Übereinstimmungen suchen

\n\n

preg_match() ist die beliebteste Funktion. Sie prüft, ob eine Zeichenkette einem Muster entspricht, und gibt 1 (Übereinstimmung vorhanden) oder 0 (keine) zurück. Der dritte Parameter ist ein Array, in das die gefundenen Übereinstimmungen geschrieben werden.

\n\n

Beispiel 1. E-Mail-Adresse prüfen

\n
<?php\n$email = "user@example.com";\n$pattern = '/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/';\n\nif (preg_match($pattern, $email)) {\n    echo "E-Mail ist korrekt";\n} else {\n    echo "E-Mail ist nicht korrekt";\n}\n// Ausgabe: E-Mail ist korrekt\n?>
\n\n

Beispiel 2. Daten aus einer Zeichenkette extrahieren

\n
<?php\n$text = "Meine Nummer: +7 (999) 123-45-67";\n$pattern = '/\\+7\\s*\\(\\d{3}\\)\\s*\\d{3}-\\d{2}-\\d{2}/u';\n\nif (preg_match($pattern, $text, $matches)) {\n    echo "Nummer gefunden: " . $matches[0];\n}\n// Ausgabe: Nummer gefunden: +7 (999) 123-45-67\n?>
\n\n

Beachten Sie: Der Modifikator u ist obligatorisch, wenn die Zeichenkette Kyrillisch oder Unicode-Sonderzeichen enthält.

\n\n

3. Die Funktion preg_replace(): Ersetzung nach Muster

\n\n

preg_replace() sucht in einer Zeichenkette nach allen Übereinstimmungen mit einem Muster und ersetzt sie durch den angegebenen Text. Sie können Erfassungsgruppen $1, $2 usw. verwenden, um Teile des Originaltextes einzufügen.

\n\n

Beispiel 3. Telefonnummer formatieren

\n
<?php\n$phone = "89991234567";\n$pattern = '/(\\d{1})(\\d{3})(\\d{3})(\\d{2})(\\d{2})/';\n$replacement = '+7 ($2) $3-$4-$5';\n\n$formatted = preg_replace($pattern, $replacement, $phone);\necho $formatted; // +7 (999) 123-45-67\n?>
\n\n

Beispiel 4. HTML von Tags bereinigen (außer erlaubte)

\n
<?php\n$html = "<b>Fett</b> <script>alert('xss')</script> Text";\n$pattern = '/<\\s*\\/?\\s*(?!b|i|u|a\\b)[^>]*>/ui';\n\n$clean = preg_replace($pattern, '', $html);\necho $clean; // <b>Fett</b>  Text\n?><                

Blogs

Buchempfehlungen