Zum Inhalt springen
Der Guide für ein smartes Leben.
Ohne Frust effektiv arbeiten

Workshop: Strings in PHP verarbeiten: Regular Expressions

Der Workshop zeigt, welche Möglichkeiten Reguläre Ausdrücke bieten und wie Sie damit am besten ohne großen Frust effektiv arbeiten.

Autoren: Redaktion pcmagazin und Timo Haberkern • 22.7.2009 • ca. 2:05 Min

Strings in PHP verarbeiten
Strings in PHP verarbeiten
© Archiv

Die Überprüfung und Verarbeitung von Textdaten gehört zum Tagesgeschäft eines Webentwicklers. Sei es bei der Überprüfung von Formulareingaben, dem Durchsuchen von Texten oder dem Zerlegen von Strings in verschiedene Bestandteile.Für einfache Suchen oder Überprüfungen genügen in der Rege...

Die Überprüfung und Verarbeitung von Textdaten gehört zum Tagesgeschäft eines Webentwicklers. Sei es bei der Überprüfung von Formulareingaben, dem Durchsuchen von Texten oder dem Zerlegen von Strings in verschiedene Bestandteile.Für einfache Suchen oder Überprüfungen genügen in der Regel die in jeder Programmiersprache vorhandenen Befehle zur Bearbeitung von Zeichenketten.Leider sind nur die wenigsten Operationen so einfach. Ein Paradebeispiel ist hier die Validierung einer E-Mail-Adresse. Diese kann sehr unterschiedlich aufgebaut sein, muss sich aber an einige grundlegende Regeln halten und besitzt zudem ein einheitliches Grundmuster.

So muss das @-Zeichen immer vorkommen, gefolgt von einem Domainnamen mit durch Punkt getrennter Endung. Vor dem @ steht ein Name oder Kürzel, wobei ein Punkt oder ein anders Sonderzeichen enthalten sein kann.

Oder stellen Sie sich vor, dass Sie innerhalb eines Textes alle Bereiche finden wollen, in denen ein Datum vorkommt, das eine vierstellige Jahreszahl besitzt. Auch dies ist ein Suchmuster.

Reguläre Ausdrücke sind hierzu die wohl beliebteste Möglichkeit, eine Zeichenkette nach einem Muster zu durchsuchen. Sie sind sehr flexibel und lassen sich auf nahezu alle möglichen Aufgaben anpassen.

Die Geschichte von Regulären Ausdrücken ist beinahe so alt, wie die der höheren Programmiersprachen. Eine Reihe von Namen werden gleichbedeutend für Reguläre Ausdrücke verwendet. RegEx, RegExp und Regular Expressions sind im Internet gebräuchliche Namen.

Viele populäre Programmiersprachen haben eine Unterstützung dieser Konstrukte bereits standardmäßig mit an Bord. Auch einige Datenbanken wie beispielsweise Postgre SQL erlauben die Suche innerhalb von Textspalten mittels Regulärer Ausdrücke. Auch in Editoren und Entwicklungsumgebungen findet man sie oft in den jeweiligen Suchen-/Ersetzen-Dialogen.

Musterdefinition

Muster sind die Grundlage für den Einsatz von Regulären Ausdrücken. Eine Musterdefinition besitzt den folgenden prinzipiellen Aufbau:

/Muster/Modifikator

Die beiden Schrägstriche begrenzen das eigentliche Muster. Das simpelste Pattern ist ein einfacher Text, der innerhalb einer Zeichenkette gesucht werden soll.

Soll beispielsweise überprüft werden, ob der Begriff PHP innerhalb eines Textes vorkommt, so kann dies wie folgt programmiert werden:

<?php
if (preg_match(,/PHP/', ,Mein
PHP-Beispiel')) { echo "PHP gefunden";
} ?>

Natürlich ist dies nur das einfachste Muster überhaupt. Dazu könnte man auch die jeweiligen String-Befehle der Programmiersprache heranziehen. Zur Musterdefinition werden einige Zeichen verwendet, die eine bestimmte Bedeutung haben.

Reguläre Ausdrücke besitzen eine ganze Menge davon, "?.()+*" sind Beispiele hierfür. Der Punkt ist beispielsweise ein Platzhalter für ein beliebiges Zeichen. Wird er innerhalb eines Ausdrucks platziert, erhalten wir ein erstes flexibles Muster, das auf mehrere Textstellen passen kann.

/m.kro/

Zeichenketten, die auf diesen Ausdruck passen, wären beispielsweise "makro" oder "mikro", nicht jedoch "mickro", da der Punkt für ein einzelnes Zeichen steht.

Quantifizierungen

Möchte man ein mehrfaches Vorkommen eines Zeichens prüfen, so gibt es in Regulären Ausdrücken eine Menge verschiedener Möglichkeiten, die man unter dem Begriff Quantifier oder Quantifizierungen zusammenfasst. Über diese kann bestimmt werden, wie oft ein bestimmtes Zeichen innerhalb einer Zeichenkette vorkommen darf.