Heim > Artikel > Backend-Entwicklung > Wussten Sie, dass PHP über eine eigene Methode verfügt, um zu überprüfen, ob eine E-Mail-Adresse existiert?
Es gibt viele Möglichkeiten, E-Mail-Adressen in PHP zu überprüfen. Die am häufigsten verwendete ist der reguläre Ausdruck, aber reguläre Ausdrücke sind problematisch. Es gibt eine integrierte Methode in PHP, die die Überprüfung durchführen kann E-Mail-Adressen wie folgt: Lassen Sie uns eine detaillierte Einführung geben und gemeinsam einen Blick darauf werfen
Mein PHP verfügt über eine eigene Methode zur Überprüfung.
filter_var
filter_var ist eine in PHP integrierte variable Filtermethode, die viele praktische Filter kann zur Überprüfung von Ganzzahlen, Gleitkommazahlen, E-Mail-Adressen, URLs, MAC-Adressen usw. verwendet werden.
Wenn filter_var false zurückgibt,$email = "lastchiliarch@163.com"; var_dump(filter_var($email, FILTER_VALIDATE_EMAIL)); $email = "asb"; var_dump(filter_var($email, FILTER_VALIDATE_EMAIL)); $email = "1@a.com"; var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));Ausgabe:
string(21) "lastchiliarch@163.com" bool(false) string(7) 1@a.comFür das illegale E-Mail-Format asb wird false zurückgegeben, für 1@a.com jedoch bestanden, aber es gibt immer noch einige Mängel. Wenn jedoch die allgemeinen Regeln befolgt werden, wird 1@a.com als legitime E-Mail-Adresse betrachtet. Gibt es also eine Möglichkeit, dies genauer zu überprüfen?
checkdnsrr
checkdnsrr wird tatsächlich verwendet, um den DNS-Eintrag des angegebenen Hosts abzufragen. Wir können damit überprüfen, ob das Postfach vorhanden ist. Für 1@a.com existiert der MX-Eintrag definitiv nicht.$email = "lastchiliarch@163.com"; var_dump(checkdnsrr(array_pop(explode("@",$email)),"MX")); $email = "1@a.com"; var_dump(checkdnsrr(array_pop(explode("@",$email)),"MX"));Ausgabe:
bool(true) bool(false)Wie Sie sehen, ist es perfekt. Der einzige Nachteil ist, dass es zu langsam ist. Daher ist es nicht geeignet, diese Methode zur gleichzeitigen Überprüfung einer großen Anzahl von Postfächern zu verwenden.
filter_var+checkdnsrr
Für die meisten illegalen Postfächer wird filter_var definitiv verwendet , und Sie können checkdnsrr zur weiteren Beurteilung verwenden.$email_arr = array("lastchiliarch@163.com", "1@a.com"); foreach($email_arr as $email) { if (filter_var($email) === false) { echo "invalid email: $email \n"; continue; } if(checkdnsrr(array_pop(explode("@",$email)),"MX") === false) { echo "invalid email: $email \n"; continue; } }Ausgabe:
invalid email: 1@a.comAber es sollte beachtet werden, dass es nur feststellen kann, dass 163.com existiert, da es nur den MX-Eintrag überprüft, dies jedoch nicht anzeigen kann Der Benutzer lastchiliarch existiert. Wenn Sie die Existenz des Postfachs genauer bestimmen möchten, können Sie nur eine Verbindung zum SMTP-Server herstellen, um es zu überprüfen. Einführung der
E-Mail-Verifizierung, der PHP-eigenen Methode zur Überprüfung, ob E-Mail, URL und IP legal sind. Hier ist eine Einführung:
Die wichtigste Methode istfilter_var-Funktion.
Syntax
filter_var(variable, filter, options)variable Erforderlich. Gibt die zu filternden Variablen an.
Filter optional. Gibt die ID des zu verwendenden Filters an.
Optionen gibt ein Array an, das Flags/Optionen enthält. Überprüfen Sie die möglichen Flags und Optionen für jeden Filter.
PHP-Filter
Beispiel #1 Ein filter_var()-Beispiel<?php var_dump(filter_var('bob@example.com', FILTER_VALIDATE_EMAIL)); var_dump(filter_var('http://example.com', FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED)); ?>Die obige Routine wird Ausgabe:
Das obige ist der detaillierte Inhalt vonWussten Sie, dass PHP über eine eigene Methode verfügt, um zu überprüfen, ob eine E-Mail-Adresse existiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!