[PHP] E-Mail-Überprüfung

Zweipunktnull

Commander
Registriert
Dez. 2004
Beiträge
2.546
Hallo!

Ich habe folgenden Code:
PHP:
$emailmuster = "/^[a-zA-Z0-9-_.]+@[a-zA-Z0-9-_.]+\.[a-zA-Z]{2,4}$/";

elseif (preg_match($emailmuster, $_POST['email']) == 0) {
    $fehler = true;
    $fehlermeldung .= "Ihre E-Mail-Adresse ist ungültig!<br></br>\n";

Da mittlerweile aber auch Umlaute und vieles mehr in EMail-Adressen vorkommen darf, wollte ich auch mein "EMail-Muster" anpassen.

$emailmuster = "/^[ ? ]+@[ ? ]+\.[ ? ]$/";

Was muss an die Stelle der fragezeichen? ALso ich möchte ihn sagen, dass erst irgendwas x-belibiges kommen darf, dann muss aber ein @ kommen, dann darf wieder irgendwas kommen, dann muss ein punkt kommen und dann wieder irgendwas.

also: x@x.x

x steht für irgendwelche zeichen (Zahlen, Buchstaben, Sonderzeichen, umlaute usw...)

wie muss dann das muster lauten?

mfg
valentin
 
such dir doch die HTML Tags für die Umlaute raus und versuchs mit denen

Nur eine Vermutung :freaky:
 
hier evtl hilft dir das.

PHP:
    function checkMail($mail)
    {

        if (eregi("^[_\\.0-9A-Za-zÄÖÜÀÉÈäöüàéè-]+@([0-9A-Za-zÄÖÜÀÉÈäöüàéè][0-9A-Za-zÄÖÜÀÉÈäöüàéè-]+\\.)+[a-z]{2,5}\$", $mail)) {
            return true;
        } else {
            return false;
        }
    }
 
wäre eine möglichkeit, wobei auch da manche gültige email adressen ausgeschlossen werden würden...

gibts denn kein ausdruck für ein beliebiges zeichen?

EDIT:
PHP:
 $emailmuster = "/^.@.\..$/";
Oder? Der Punkt für x-beliebige Zeichen...
Noch 'ne Frage: Könnte ich die / am Anfang und Ende auch weglassen? (Hab ich nämlich eben bei meiner Suche im Inet gefunden...)
 
Zuletzt bearbeitet:
Ich empfehle dir den regex coach: http://www.weitz.de/regex-coach/ Damit kannst du relativ einfach testen, ob deine regex, das erfasst, was du willst ;)

Edit: ansonst sollte diese regexp gehen:

.*@.*\.+[a-zA-Z]{2,5}

Erlaubt vor dem @ jedes Zeichen und als domain ebenfalls. Domainendung dagegen ohne Umlaute
 
Zuletzt bearbeitet:
Was heißt der Stern?
Ich wollts jetzt so machen:
"/^.+@.+\..+$/"

(Das Plus hat ich oben vergessen, als zeichen dafür, das die x-beliebigen Zeichen (.) so oft wie sie wollen vorkommen dürfen)
 
Ja, so ist's besser ;)

+ heisst, das ein beliebiges Zeichen mindesten (!) einmal vorkommen muss. Stern bedeutet, 0 mal oder beliebig oft. Wobei du noch die Überprüfung der Domainendung einbauen solltest - da sind ja iirc keine Umlaute erlaubt
 
Okay, also so:
PHP:
$emailmuster = "/^.+@.+\.[a-zA-Z]{2,6}$/";
jetzt aber noch eine frage, kann ich es irgendwie erreichen, dass das @ in der Mitte das einzigste @ ist?
Weil im mom wäre ja auch noch bspw. m@il@gmx.de möglich...
 
ich weis nicht aber ich glaube ein @ vor dem eigentlich @domainname ist möglich, so ist diese email zum beispiel rfc2822 komform -> "woo@yay"@example.com
 
Zurück
Oben