preg_match - Wie funktionierts richtig?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • preg_match - Wie funktionierts richtig?

    preg_match bringt mich mehr zum Schwitzen als der Sommer!
    Diesen Satz wollte ich erst als Titel für dieses Thema nehmen, habe mich jedoch spontan dagegenentschieden, da es unangebracht wäre :whistling:

    Ich bin eine Person, die sich vorerst erkundigt, bevor sie schnaufend und bockig in die Tastatur haut und heulend schreibt "Waruhm get dass niecht :cursing: :cursing: "
    Ich habe mir bereits diese Seiten angeschaut:
    danielfett.de/internet-und-ope…ikel,regulaere-ausdruecke
    regexp-evaluator.de/tutorial/php-funktionen/preg-match/
    php.net/manual/de/function.preg-match.php (Ersten Kommentar)
    lzone.de/examples/PHP preg_match
    und habe versucht aus dem .. naja "Wissen" etwas Feines zu zaubern, was mir leider nach mehrmaligem Rumprobieren nicht gelungen ist.

    Mein Ergebnis nach ca. 1-2h rumprobieren:

    Quellcode

    1. if (!preg_match('#^[(a-z){4,}0-9@.]+$#i', $email)) {
    2. die('<div class="error">Die Email enthält ung&uuml;ltige Zeichen.</div>');
    3. }


    Ich möchte erreichen, dass man nur Buchstaben von a-z bzw. A-Z sowie Zahlen von 0-9 und zu guter letzt die Zeichen . und @ eingeben darf, wobei beachtet werden soll, dass in der Eingabe mindestens 4 Buchstaben sein müssen!
    Mein Ergebnis: man kann sich ......... nennen, man kann sich ,,,,,,,,,,, nennen. Ich verstehe die Kodierung von preg_match einfach nicht so richtig, da es nirgends wirklich 1a erklärt ist, sondern ich nur "dahingeklatschte" Code-Beispiele gesehen habe, welche ich für mich 0 erschließen kann. Und einfach Copy & Paste kann und will ich da nicht machen, da man dort dann Zeichen eingeben könnte, welche ich nicht zulassen möchte.

    Wenn sich jemand mit preg_match auskennt oder das Realisieren kann, was mein Vorhaben ist, wäre ich dafür sehr sehr dankbar.

    [Edit-Bereich]

    Edit 1:

    Mit:

    Quellcode

    1. !preg_match("/^(\w{8,16})$/i", $email)


    konnte ich es schoneinmal schaffen, dass Buchstaben, Zahlen sowie ein _ erlaubt sind und eine Länge von 8-16 Zeichen haben müssen!
    Ich muss noch . und @ sowie ein - hinzufügen, da ich nicht weiß, ob es dort eine "und-Funktion" gibt, muss ich weiter rumprobieren.
    Das \w steht für alle Buchstaben, Zahlen und _ habe ich nun gelernt. Wenn ich {8,16} hinter a-z schreibe, funktioniert es nicht - ich vermute mal, dass alle Buchstaben von a-z dann eine Länge von zwischen 8-16 Buchstaben haben muss! Habe ich jedoch nicht getestet, ist reine Theorie. Das "i" am Ende bedeutet, dass Groß- sowie Kleinbuchstaben erlaubt sind im Bezug auf \w. Die Klammern grenzen den Bereich ein, das ^ steht für den Start und das $ für das Ende einer Zeile (Was genau Start und Ende dort heißen soll, weiß ich leider nicht, da danach ja immernoch etwas steht) Was die \ am Anfang und am Ende zu heißen haben, weiß ich leider noch nicht. Wenn ich mehr über Eingrenzungen und Zusammenhänge dort erfahren könnte, wäre mir schonmal viel weitergeholfen.

    Edit 2:

    Damit:

    Quellcode

    1. !preg_match("/([\w+])@(\w+)\.(\w+)/", $email)


    bin ich jetzt einigermaßen zufrieden. Zumindest sind die wichtigsten zeichen erlaubt, ich glaube so kann man das durchaus lassen.
    Wenn jemand noch etwas zu preg_match beitragen möchte, wäre ich dafür auch ganz dankbar, da ich mir dieses Wissen gerne aneignen würde.
    Quelle für meinen Fund: php-einfach.de/codeschnipsel_9325.php
    Diesen preg_match-Code verstehe ich sogar teilweise, bis auf ein paar Kleinigkeiten. Ich werde weiter rumtesten! :)

    Edit 3:

    Das hier:

    Quellcode

    1. !preg_match("/^[a-zA-Z0-9]+$/s", $password)


    habe ich für das Passwort verwendet. Erlaubt sind nur Klein- und Großbuchstaben sowie Zahlen.
    Quelle: tutorials.de/threads/nur-buchs…d-zahlen-erlauben.195539/

    Viele Grüße
    icqgamer

    Dieser Beitrag wurde bereits 10 mal editiert, zuletzt von icqgamer ()