Reguläre Ausdrücke

Aus php bar
Wechseln zu: Navigation, Suche

Was sind Reguläre Ausdrücke und wofür sind sie gut?

RegEx (Regular Expressions = dt. reguläre Ausdrücke) sind Muster (engl. Patterns) die verwendet werden um Zeichenketten (engl. strings) zu durchsuchen. Das Prinzip funktioniert so, dass man zum Beispiel eine Zeichenkette durchsucht nach dem Muster "finde Text der mit 'Hallo, ' beginnt und mit ', wie geht es dir?' aufhört, was dazwischen steht ist egal". Dazwischen könnte dann beispielsweise [irgend ein] Name stehen.

Mit dem Ergebnis einer solchen Suche lässt sich aber noch mehr Anfangen als die bloße Erkenntnis ob in einer Zeichenkette etwas derartiges vorhanden ist oder nicht: Man kann das Ergebnis ausführlich bearbeiten, zum Beispiel kann man bestimmte Teile einer Zeichenkette ersetzen, extrahieren, formatieren, und, und, und.

Dank RegEx ist es also möglich zum Beispiel E-Mail-Adressen auf ihre Gültigkeit zu überprüfen, URLs automatisch zu verlinken, Text-Smilies in Bild-Smilies umzuwandeln, und so weiter und sofort. Egal wie professionell ein Script werden soll, man kommt um RegEx einfach nicht herum.

reguläre Ausdrücke und PHP

In PHP stehen 2 Arten von Funktionen zur Verfügung die RegEx unterstützen, beide haben ihre Vor- und Nachteile, und signifikante Unterschiede: In PCRE-Funktionen (Perl-Compatible Regular Expression Funktionen) kann man reguläre Ausdrücke nach Perl-Syntax Verwenden (was das ist, dazu später mehr) und Posix-extended RegEx-Funktionen (Posix erweiterte RegEx-Funktionen), in denen man POSIX 1003.2-Syntax verwenden kann (dazu später auch mehr).

PCRE-Funktionen

Funktion Beschreibung
preg_match Zum Durchsuchen einer Zeichenkette
preg_match_all Zum Durchsuchen einer Zeichenkette
preg_replace Zum Durchsuchen und Ersetzen in Zeichenketten und Arrays
preg_replace_callback Spezielle Form von preg_replace()
preg_split Funktioniert wie explode(), mit dem Unterschied das man auch RegEx benutzen kann.
preg_quote Funktioniert wie addslashes(), bloß für RegEx-Zeichen
preg_grep Durchsucht ein Array und gibt die Suchergebnisse als Array zurück

Posix-extended RegEx-Funktionen

Diese Funktionen werden vermutlich ab PHP 6 nicht mehr standardmäßig vorhanden sein, können aber bei bedarf per PEAR/PECL nachinstalliert werden. Die Perl-Kompatiblen Funktionen sind also zu bevorzugen, auch weil sie schneller zu Werke gehen.

Funktion Beschreibung
ereg Zum Durchsuchen eines Strings
ereg_replace Zum Durchsuchen und Ersetzen in einem String
eregi Zum Durchsuchen eines Strings, case insensitive (Groß/Kleinschreibung wird ignoriert)
eregi_replace Zum Durchsuchen und Ersetzen in einem String, case insensitive
split Funktioniert wie explode, mit dem Unterschied das man auch RegEx benutzen kann.
spliti ZFunktioniert wie split, case insensitive
sql_regcase Erstellt einen RegEx, der für die Suche nach dem angegebenen Wort verwendet werden kann.

Tutorial

Links