kostenloser Webspace werbefrei: lima-city


eMail Validierung pattern ?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    feedping

    feedping hat kostenlosen Webspace.

    Hallo
    wie soll ich eine eMail prüfen,

    ist es mitt eregi oder mit preg_match besser / richtig ?

    wie lautet der richtige / beste pattern ?

    "^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$"
    
    "^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$"
    
    "/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/"
    
    ...usw.


    welcher "ausdruck" ist der "beste" ... es gibt da ja sooo viele Beispiele ...

  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. feedping schrieb:
    ist es mitt eregi oder mit preg_match besser / richtig ?
    wie lautet der richtige / beste pattern ?

    Ich überprüfe Email-Adressen immer mit folgendem Pattern:
    "/^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,4}$/i"

    und preg_match:
    if (!preg_match("/^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,4}$/i", $email)) {
    echo "falsche email";
    exit;
    } else {
    //weitermachen
    }
  4. Ich machs so:

    function check_email_address($email)
    {
       $isValid = true;
       $atIndex = strrpos($email, "@");
       if (is_bool($atIndex) && !$atIndex)
       {
          $isValid = false;
       }
       else
       {
          $domain = substr($email, $atIndex+1);
          $local = substr($email, 0, $atIndex);
          $localLen = strlen($local);
          $domainLen = strlen($domain);
          if ($localLen < 1 || $localLen > 64)
          {
             // local part length exceeded
             $isValid = false;
          }
          else if ($domainLen < 1 || $domainLen > 255)
          {
             // domain part length exceeded
             $isValid = false;
          }
          else if ($local[0] == '.' || $local[$localLen-1] == '.')
          {
             // local part starts or ends with '.'
             $isValid = false;
          }
          else if (preg_match('/\\.\\./', $local))
          {
             // local part has two consecutive dots
             $isValid = false;
          }
          else if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain))
          {
             // character not valid in domain part
             $isValid = false;
          }
          else if (preg_match('/\\.\\./', $domain))
          {
             // domain part has two consecutive dots
             $isValid = false;
          }
          else if(!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/',
                     str_replace("\\\\","",$local)))
          {
             // character not valid in local part unless 
             // local part is quoted
             if (!preg_match('/^"(\\\\"|[^"])+"$/', str_replace("\\\\","",$local)))
             {
                $isValid = false;
             }
          }
          if ($isValid && !(checkdnsrr($domain,"MX") || checkdnsrr($domain,"A")))
          {
             // domain not found in DNS
             $isValid = false;
          }
       }
       return $isValid;
    }
  5. Wenn die Filter-Erweiterung zur Verfügung steht (wie bei Lima) kannst du einfach die Funktion filter_var() benutzen.

    $ergebnis = filter_var ('test@example.com', FILTER_VALIDATE_EMAIL);
  6. Autor dieses Themas

    feedping

    feedping hat kostenlosen Webspace.

    chatter schrieb:
    Wenn die Filter-Erweiterung zur Verfügung steht (wie bei Lima) kannst du einfach die Funktion filter_var() benutzen.

    $ergebnis = filter_var ('test@example.com', FILTER_VALIDATE_EMAIL);


    hatte ich auch schon gefunden,
    aber da steht im Kommentar;

    FILTER_VALIDATE_EMAIL allows incomplete e-mail addresses to be validated, for examle john@gmail will validate as a proper e-mail address.


    hier: http://www.php.net/manual/de/filter.filters.validate.php#101468

    also ist das ja eher Sinnlos.

  7. thomasba

    Co-Admin Kostenloser Webspace von thomasba

    thomasba hat kostenlosen Webspace.


    FILTER_VALIDATE_EMAIL allows incomplete e-mail addresses to be validated, for examle john@gmail will validate as a proper e-mail address.


    hier: http://www.php.net/manual/de/filter.filters.validate.php#101468

    also ist das ja eher Sinnlos.


    Probiers doch wenigstens aus -.-

    Bei wird die E-Mail Adresse nicht als Vailde erkannt...

    Wird auch in diesem Eintrag erwähnt…

    Beitrag zuletzt geändert: 6.8.2011 20:31:27 von thomasba
  8. Autor dieses Themas

    feedping

    feedping hat kostenlosen Webspace.

    Hallo

    ok, habs getestet, geht also doch

    es ist nur etwas verwirrend, das bei erfolgreicher Validierung kein bool(true) zurückgegeben wird,
    sondern der String der eMail-Adresse aber bei nicht validen eMails kommt ein bool(false) ...

    also man muss nur "richtig herum" abfragen, dann klappt's damit.
    nicht if ( $emailcheck === true ) ... sondern if ( $emailcheck === false ) ....

    (!)
    ABER ... bei Tests bekomme ich damit auch name@example.d als korrekte eMail
    (beachte .d .... also nur ein Buchstabe TLD) ... doch nicht sooooo ganz ...

    DANKE an fabo für die Funktion, die scheint mir unter all den Varianten,
    die ich bisher so gesehen habe, die bisher beste zu sein ...


    Beitrag zuletzt geändert: 6.8.2011 21:49:25 von feedping
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!