PHP - Reguläre Ausdrücke: Ein Anfängerleitfaden

Hallo da draußen, zukünftige PHP-Zauberer! Heute tauchen wir in die faszinierende Welt der regulären Ausdrücke in PHP ein. Machen Sie sich keine Sorgen, wenn Sie noch nie zuvor programmiert haben – ich werde Ihr freundlicher Guide auf dieser aufregenden Reise sein. Los geht's!

PHP - Regular Expression

Was sind Reguläre Ausdrücke?

Bevor wir uns den PHP-spezifischen Dingen zuwenden, lassen Sie uns verstehen, was reguläre Ausdrücke (regex) sind. Stellen Sie sich vor, Sie sind ein Detektiv, der nach einem bestimmten Muster in einem Meer von Text sucht. Das ist im Wesentlichen, was regex macht – er hilft Ihnen dabei, Text basierend auf Mustern zu durchsuchen, zu matchen und zu manipulieren. Cool, oder?

POSIX Reguläre Ausdrücke

POSIX (Portable Operating System Interface) reguläre Ausdrücke waren der ursprüngliche Standard für regex in PHP. Während sie heute nicht so häufig verwendet werden, kann das Verständnis dieser Ausdrücke Ihnen eine solide Grundlage bieten.

Basis POSIX Regex Beispiel

Lassen Sie uns mit einem einfachen Beispiel beginnen:

$text = "The quick brown fox jumps over the lazy dog.";
$pattern = "/quick/";
if (ereg($pattern, $text)) {
echo "Treffer gefunden!";
} else {
echo "Kein Treffer gefunden.";
}

In diesem Beispiel suchen wir nach dem Wort "quick" in unserem Satz. Die ereg() Funktion überprüft, ob das Muster anywhere im Text übereinstimmt.

PHP's Regexp POSIX Funktionen

PHP bietet mehrere POSIX regex Funktionen. Hier ist eine Tabelle der häufigsten:

Funktion Beschreibung
ereg() Regulärer Ausdruck match
eregi() Case-insensitive regulärer Ausdruck match
ereg_replace() Ersetzen regulärer Ausdruck
split() String in Array aufteilen durch regulären Ausdruck

Beispiel: Verwendung von eregi() für case-insensitive Matching

$text = "The Quick Brown Fox";
$pattern = "quick";
if (eregi($pattern, $text)) {
echo "Treffer gefunden!";
} else {
echo "Kein Treffer gefunden.";
}

Dieses Mal finden wir einen Treffer, auch wenn "Quick" in unserem Text großgeschrieben ist.

PERL Style Reguläre Ausdrücke

Nun lassen Sie uns über die moderneren und leistungsfähigeren PERL-kompatiblen regulären Ausdrücke (PCRE) sprechen. Diese sind das, was Sie wahrscheinlich in Ihren PHP-Projekten verwenden werden.

Basis PCRE Beispiel

$text = "The quick brown fox jumps over the lazy dog.";
$pattern = "/quick/";
if (preg_match($pattern, $text)) {
echo "Treffer gefunden!";
} else {
echo "Kein Treffer gefunden.";
}

Dies sieht ähnlich wie unser POSIX Beispiel aus, aber wir verwenden preg_match() anstelle von ereg().

PHP's Regexp PERL Kompatible Funktionen

PCRE Funktionen in PHP sind flexibler und effizienter. Hier ist eine Tabelle der häufig verwendeten PCRE Funktionen:

Funktion Beschreibung
preg_match() Regulärer Ausdruck match ausführen
preg_match_all() Globales reguläres Ausdruck match ausführen
preg_replace() Regulärer Ausdruck suchen und ersetzen ausführen
preg_split() String durch regulären Ausdruck aufteilen

Beispiel: Verwendung von preg_match_all() zum Finden aller Treffer

$text = "The quick brown fox jumps over the quick lazy dog.";
$pattern = "/quick/";
if (preg_match_all($pattern, $text, $matches)) {
echo "Gefunden " . count($matches[0]) . " Treffer!";
print_r($matches);
} else {
echo "Keine Treffer gefunden.";
}

Dieses Skript findet alle Vorkommen von "quick" in unserem Text und speichert sie im Array $matches.

Fortgeschrittene PCRE Techniken

Nun, da wir die Grundlagen abgedeckt haben, lassen Sie uns einige fortgeschrittene Techniken ansehen.

Metazeichen

Metazeichen sind spezielle Zeichen in regex, die spezifische Bedeutungen haben. Hier sind einige häufige:

  • . : Passt auf jedes einzelne Zeichen außer Zeilenumbruch
  • ^ : Passt am Anfang einer Zeichenkette
  • $ : Passt am Ende einer Zeichenkette
  • * : Passt auf null oder mehr Vorkommen
  • + : Passt auf ein oder mehr Vorkommen
  • ? : Passt auf null oder ein Vorkommen

Beispiel: Verwendung von Metazeichen

$text = "The quick brown fox jumps over the lazy dog.";
$pattern = "/^The/";
if (preg_match($pattern, $text)) {
echo "Der Text beginnt mit 'The'";
} else {
echo "Der Text beginnt nicht mit 'The'";
}

Dieses Skript überprüft, ob unser Text mit "The" beginnt.

Zeichenklassen

Zeichenklassen erlauben es Ihnen, ein Subset von Zeichen zu matchen. Sie werden in eckige Klammern [] eingeschlossen.

Beispiel: Verwendung von Zeichenklassen

$text = "The quick brown fox jumps over the lazy dog.";
$pattern = "/[aeiou]/i";
if (preg_match_all($pattern, $text, $matches)) {
echo "Gefunden " . count($matches[0]) . " Vokale!";
print_r($matches);
} else {
echo "Keine Vokale gefunden.";
}

Dieses Skript findet alle Vokale in unserem Text. Das i am Ende des Musters macht es case-insensitive.

Praktische Anwendungen

Nun, da wir die Grundlagen und einige fortgeschrittene Techniken abgedeckt haben, lassen Sie uns eine realistische Anwendung betrachten.

Validierung einer E-Mail-Adresse

$email = "[email protected]";
$pattern = "/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/";
if (preg_match($pattern, $email)) {
echo "Gültige E-Mail-Adresse!";
} else {
echo "Ungültige E-Mail-Adresse!";
}

Dieses Skript verwendet ein komplexes regex Muster, um eine E-Mail-Adresse zu validieren. Es überprüft:

  • Eins oder mehr Buchstaben, Zahlen, Punkte, Unterstriche, Prozentzeichen, Pluszeichen oder Trennzeichen vor dem @
  • Eins oder mehr Buchstaben, Zahlen, Punkte oder Trennzeichen nach dem @
  • einen Punkt gefolgt von zwei oder mehr Buchstaben am Ende

Schlussfolgerung

Glückwunsch! Sie haben gerade Ihre ersten Schritte in die Welt der regulären Ausdrücke in PHP unternommen. Behalten Sie im Gedächtnis, dass regex ein leistungsstarkes Werkzeug ist, aber es kann auch komplex sein. Der Schlüssel ist die Übung – je öfter Sie es verwenden, desto wohler werden Sie damit umgehen.

Während Sie Ihre PHP-Reise fortsetzen, werden Sie feststellen, dass regex für Aufgaben wie Formularvalidierung, Datenanalyse und Textmanipulation äußerst nützlich ist. Weiter erkunden, weiter codieren und vor allem: haben Sie Spaß!

Credits: Image by storyset