PHP: Schnellreferenz reguläre Ausdrücke

Werbung

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
print 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:

Über Gastautor

DrWeb.de ist die "Grande Dame" des deutschen Bloggings und seit nunmehr 14 Jahren im Internet aktiv. Das beliebte Magazin richtet sich dabei an Webworker, Selbstständige, IT-Entscheider, Seitenbetreiber sowie Marketing-Verantwortliche und bietet einen Überblick im undurchdringlichen Dschungel zahlreicher "Geld verdienen im Internet" Konzepte. Werden Sie jetzt Gastautor und profitieren Sie von der großen Reichweite und den Markennamen DrWeb.de.

4 Kommentare zu PHP: Schnellreferenz reguläre Ausdrücke

  1. Knut Becker 6. Mai 2011 at 11:34 #

    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;
    }

Trackbacks

  1. wieder mal preg_match auf klein-grossbuchstaben und zahlen - php.de - 5. Oktober 2009

    [...] ich krigs einfach noch nicht hin, obwohl ich fleißig versuche, dieses Thema zu verstehen. Selbst PHP: Schnellreferenz reguläre Ausdrücke | PHP | Dr. Web Magazin konnte mir nicht helfen. Folgendes Problem: mit PHP-Code: [...]

  2. Webmaster-Glossar.de – Web, SEO, News & Trends » Suchmaschinenfreundliche URLs – mittels htaccess - 26. August 2010

    [...] , SelfHTML , DrWeb , modrewrite Stichwörter: mod [...]

  3. Hilfe f - 12. September 2010

    [...] vielleicht so? save150_comp_KG_rlow.rep[1-1000] PHP: Schnellreferenz regul

Hinterlasse eine Antwort

Bitte bei weiteren Kommentaren per Email benarichtigen! Auch möglich: Abo ohne Kommentar.

Spam protection by WP Captcha-Free