Der einfachste und sicherste Weg, um zu überprüfen, ob eine E-Mail-Adresse korrekt ist, ist die Verwendung der folgenden filter_var()
Funktion:
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
// invalid emailaddress
}
Zusätzlich können Sie überprüfen, ob die Domain einen MX
Datensatz definiert :
if (!checkdnsrr($domain, 'MX')) {
// domain is not valid
}
Dies garantiert jedoch immer noch nicht, dass die E-Mail vorhanden ist. Der einzige Weg, dies herauszufinden, ist das Senden einer Bestätigungsmail.
Nachdem Sie Ihre einfache Antwort erhalten haben, können Sie sich gerne über die Validierung von E-Mail-Adressen informieren, wenn Sie etwas lernen oder auf andere Weise einfach die schnelle Antwort verwenden und fortfahren möchten. Keine harten Gefühle.
Der Versuch, eine E-Mail-Adresse mit einem regulären Ausdruck zu überprüfen, ist eine "unmögliche" Aufgabe. Ich würde sogar sagen, dass der von Ihnen erstellte Regex nutzlos ist. Es gibt drei RFCs in Bezug auf E-Mail-Adressen und das Schreiben eines regulären Ausdrucks, um falsche E-Mail-Adressen abzufangen und gleichzeitig keine falschen Positiven zu haben, ist etwas, was kein Sterblicher tun kann. In dieser Liste finden Sie Tests (sowohl fehlgeschlagen als auch erfolgreich) des von der PHP- filter_var()
Funktion verwendeten regulären Ausdrucks .
Selbst die integrierten PHP-Funktionen, E-Mail-Clients oder Server machen es nicht richtig. Trotzdem ist in den meisten Fällen filter_var
die beste Option.
Wenn Sie wissen möchten, welches Regex-Muster PHP (derzeit) zur Überprüfung von E-Mail-Adressen verwendet, lesen Sie die PHP-Quelle .
Wenn Sie mehr über E-Mail-Adressen erfahren möchten, empfehle ich Ihnen, mit dem Lesen der technischen Daten zu beginnen, aber ich muss Sie warnen, dass dies in keiner Weise einfach zu lesen ist:
Beachten Sie, dass dies filter_var()
wie bereits erwähnt nur ab PHP 5.2 verfügbar ist. Wenn Sie möchten, dass es mit früheren Versionen von PHP funktioniert, können Sie den in PHP verwendeten regulären Ausdruck verwenden:
<?php
$pattern = '/^(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){255,})(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){65,}@)(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22))(?:\\.(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\\]))$/iD';
$emailaddress = 'test@gmail.com';
if (preg_match($pattern, $emailaddress) === 1) {
// emailaddress is valid
}
PS Ein Hinweis zum oben verwendeten Regex-Muster (von der PHP-Quelle). Es sieht so aus, als ob Michael Rushton ein Urheberrecht daran hat . Wie bereits erwähnt: "Sie können diesen Code gerne verwenden und weitergeben. Bitte bewahren Sie diesen Copyright-Hinweis auf."
validateEmail
wäre Corret, sowie vorbei$email
, nicht$EMAIL
.