von Markus Christian Koch
An vielen Stellen kann der Gebrauch von regulären Ausdrücken das Programmiererleben erheblich vereinfachen. Allerdings ist der Einstieg in deren Gebrauch nicht so ganz einfach – aus diesem Grunde haben wir an dieser Stelle eine Kurzreferenz für Sie zusammengestellt, die so manches komplexe if-Gebilde ersparen kann.
| ^ | Anfang eines Strings |
| $ | Ende eines Strings |
| . | ein beliebiges Zeichen |
| n? | optional vorhandenes ‘n’ |
| n* | Kein oder mehrfaches Vorkommen von ‘n’ |
| n+ | Ein oder mehrere Vorkommen von ‘n’ |
| n{2} | Genau zweifaches Vorkommen von ‘n’ |
| n{2,} | Mindestens 2 oder mehrere Vorkommen von ‘n’ |
| n{2,4} | Mindestens 2, höchstens 4 Vorkommen von ‘n’ |
| () | Klammern für Ausdrücke |
| (n|a) | Entweder ‘n’ oder ‘a’ |
| [1-6] | eine Zahl zwischen 1 und 6 |
| [c-h] | ein Kleinbuchstabe zwischen c und h (c,d,e,f,g,h) |
| [D-H] | ein Großbuchstabe zwischen D und H (D,E,F,G,H) |
| [^a-z] | kein Vorkommen von Kleinbuchstaben zwischen a und z |
| [_a-zA-Z] | ein Unterstrich und ein beliebiger Buchstabe des Alphabets |
| [:space:] | Leerzeichen |
| \ | Escape-Zeichen, u.a. für ? ‘ ” - |
… und einige Beispiele:
eregi(“^([a-z\?\-]|[[:space:]])*$”, $textstring)
Ein String aus einer beliebigen Anzahl Kleinbuchstaben, Fragezeichen und Minuszeichen ODER einer beliebigen Anzahl Leerzeichen.
preg_match(“^([A-Z[:space:]]|[0-9])*$”, $textstring)
Ein String bestehend aus einer beliebigen Anzahl an Grossbuchstaben und Leerzeichen ODER nur aus Zahlen bestehend.
preg_match_all(“modules.php\?name=([/:\-\'{}()._&a-zA-Z0-9+=]*)”, $textstring, $list)
Ein String mit dem ein oder mehrfach enthaltenen Seitennamen “modules.php?names=” gefolgt von einer beliebig langen Zeichenkette. Diese darf alle alphanumerischen Zeichen 0-9, A-Z und a-z enthalten sowie runde Klammern, spitze Klammern, Punkte, Unterstriche, Und-Zeichen, Slashes, Doppelpunkte, Pluszeichen, Minuszeichen und Hochkommata. $list bezeichnet das Array, in dem welchem Informationen über die Fundstellen des gesuchten Ausdrucks gespeichert werden.
Innerhalb der Ausdrücke in eckigen Klammern und Doppelpunkten ‘[:' und ':]‘sind verschiedene Klassen an Zeichen möglich (standard character classes):
| alpha | A-Z, a-z |
| graph | jedes druckbare Zeichen außer Leerzeichen |
| lower | Kleinbuchstaben |
| upper | Großbuchstaben |
| cntrl | Steuerzeichen |
| jedes druckbare Zeichen inklusive Leerzeichen | |
| xdigit | Prüfung auf Hexadezimalwerte |
Einfache Typprüfungen an Strings lassen sich in PHP >=4.04 mit Hilfe der ctype_-Funktionen schneller realisieren als mit regulären Ausdrücken: unter den jeweiligen Namen der Standard Character Classes stehen die entsprechenden Funktionen ctype_alpha, ctype_graph, ctype_lower etc. zur verfügung. So prüft z.B. “if (ctype_lower($text)) {…}” ob der Inhalt der Variable $text ausschliesslich aus Kleinbuchstaben besteht. Trifft dies zu, so wird eine hier nicht weiter ausgeführte Prozedur eingeleitet.
Weitere Beiträge:
- 5 Ideen wie Sie wiederkehrende Arbeitsschritte & Marketingprozesse gewinnbringend im Internet automatisieren! Ein Gastbeitrag von Robert Nabenhauer.
- Wachstum durch Facebook-Gewinnspiele: Wie Sie über Facebook virale Gewinnspiele & eine schnell wachsende Fangemeinde aufbauen
- Wie Sie aufmerksamkeitsstarke Prelaunch-, Launch- und Relaunch-Szenarien aufbauen und dabei Viralität, Spannung & Kaufkraft erzeugen
- Wie Sie waschechte Iphone-Apps mit PhoneGAP entwickeln, um am lukrativen App-Markt mitzumischen
- Wie Sie Ihr Shop-Sortiment so präsentieren, dass der Kunde in Zukunft mehr findet und eher kauft! Ein Gastbeitrag von Nicolas Schmidt-Voigt.
- 11 faszinierende BuddyPress-Plugins, um kostenlos aus WordPress ein soziales Netzwerk zu zaubern
- Die Vorboten einer neuen Internet-Industrie! Ein exklusiver Rückblick & Blick hinter die Kulissen der Clickbank-Exchange 2011 in New York.


Und hier noch eine sehr nützliche Funktion zum validieren einer E-Mail-Adresse:
function check_email($email)
{
if(!ereg(“^[^@]{1,64}@[^@]{1,255}$”, $email)) {
return false;
}
$email_array = explode(“@”, $email);
$local_array = explode(“.”, $email_array[0]);
for ($i = 0; $i < sizeof($local_array); $i++) {
if(!ereg(“^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\”[^(\\|\")]{0,62}\”))$”, $local_array[$i])) {
return false;
}
}
if(!ereg(“^\[?[0-9\.]+\]?$”, $email_array[1])) {
$domain_array = explode(“.”, $email_array[1]);
if(sizeof($domain_array) < 2) {
return false;
}
for($i = 0; $i < sizeof($domain_array); $i++) {
if(!ereg(“^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$”, $domain_array[$i])) {
return false;
}
}
}
return true;
}