1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Validierung von Topleveldomains (preg_match)

  • osiris
  • 18. März 2008 um 13:33
  • Unerledigt
  • osiris
    8
    osiris
    Mitglied
    Punkte
    695
    Beiträge
    109
    • 18. März 2008 um 13:33
    • #1

    Hallo,
    ich arbeite gerade an einem Registrationsskript für einen kleinen Onlinedienst.

    Dort muss man einfach seine Mailadresse 2x eingeben und bekommt dann ein Passwort zugesandt.
    Natürlich muss die Mailadresse vorher irgendwie abgecheckt werden.
    Dabei bin ich auf folgendes Problem mit den Toplevel-Domains gestoßen:

    Ich würde gerne überprüfen, ob die Topleveldomain nur aus Buchstaben besteht.
    Das kann man mit preg_match machen und es würde wohl etwa so aussehen:

    PHP
    preg_match('/^[a-z]+$/i', $toplevel)

    Ich verstehe aber den Syntax leider nicht ganz.
    Wofür steht das "+$" und das "i"?
    Eigentlich ist mir der komplette Ausdruck "/^[a-z]+$/i" ein kleines Rätsel.
    Ich weiß zwar, was das bedeutet, kann's aber nicht "wörtlich" übersetzen.
    php.net hat mich dahingehend leider auch nicht wirklich befriedigt.

    Kann mir das mal jemand aufschlüsseln?

  • Ringding
    11
    Ringding
    Mitglied
    Reaktionen
    12
    Punkte
    1.237
    Beiträge
    244
    • 18. März 2008 um 14:16
    • #2

    + bedeutet, dass das, was vorher steht, einmal oder öfter vorkommen muss.

    Das i bedeutet "ignore case".

    Das $ bedeutet "Ende der Zeile/des Strings"

  • Jensi
    28
    Jensi
    Mitglied
    Reaktionen
    141
    Punkte
    8.486
    Beiträge
    1.649
    • 18. März 2008 um 14:16
    • #3
    Zitat von osiris

    Eigentlich ist mir der komplette Ausdruck "/^[a-z]+$/i" ein kleines Rätsel.

    • Das ^ steht für den Anfang (d. h. vor der Regel danach darf nichts stehen)
    • Das [a-z] steht für die Kleinbuchstaben von a-z
    • Das [a-z]+ bedeutet: Einer oder mehrere dieser Buchstaben hintereinander
    • Das $ steht für das Ende (d. h. nach der Regel davor darf nichts stehen)
    • Das i danach ist ein Modifier, damit Groß-/Kleinschreibung ignoriert wird.
  • osiris
    8
    osiris
    Mitglied
    Punkte
    695
    Beiträge
    109
    • 18. März 2008 um 15:14
    • #4

    Okay, das hab ich verstanden.

    Dann mal noch eine Frage:
    Muss/sollte ich bei der Verwendung vom preg_match immer diese Delimiter setzen, auch wenn ich keine Modifier benutze?

    Und muss man die auch bei preg_match_all setzen?

  • bjelli
    3
    bjelli
    Mitglied
    Punkte
    80
    Beiträge
    15
    • 22. März 2008 um 12:54
    • #5
    Zitat von osiris

    Muss/sollte ich bei der Verwendung vom preg_match immer diese Delimiter setzen, auch wenn ich keine Modifier benutze? Und muss man die auch bei preg_match_all setzen?

    Leider ja. Da in PHP den Pattern als Strings darstellt, muss man rund um die normalen Delimiter zusätzlich noch die Quotes des Strings machen, also z.B.

    PHP
    $text = "Für das Web ist PHP die Scripting-Sprache der Wahl.";
    if (preg_match("/web/i", $text)) {
       echo "Es wurde eine Übereinstimmung gefunden.";
    }

    In Perl braucht man dafür weniger Delimiter/Quotes, dafür aber
    den gefählichen Matching-Wurm:

    PHP
    $text = "Für das Web ist Perl die Scripting-Sprache der Wahl.";
    if( $text =~ m/web/i ) {
        print "Es wurde eine Übereinstimmung gefunden.";
    }

    Noch ein Tipp: Delimiter kann man bei bedarf austauschen, z.B. weil man die Schrägstriche innerhalb des Patterns braucht:

    PHP
    $text = "http://www.informatik-forum.at/newreply.php?do=newreply";
    if (preg_match("|informatik-forum.at/newreply|i", $text)) {
       echo "Es wurde eine Übereinstimmung gefunden.";
    }

    Brigitte


    P.S. noch mehr? FRIEDL,Jeffrey E. F. (2007): Reguläre Ausdrücke. O'Reilly. ISBN 3897217201.

    Brigitte Jellinek - http://multimediatechnology.at/web-communities/
    Ich unterrichte in einem Medieninformatik-Studium (BSc, MSc) mit Schwerpunkt Web Development
    Meine Themen: Ruby on Rails, Javascript, SCRUM, git, Test Driven Development,...

  • Maximilian Rupp 27. Dezember 2024 um 12:04

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung