Heim  >  Artikel  >  Backend-Entwicklung  >  Wussten Sie, dass PHP über eine eigene Methode verfügt, um zu überprüfen, ob eine E-Mail-Adresse existiert?

Wussten Sie, dass PHP über eine eigene Methode verfügt, um zu überprüfen, ob eine E-Mail-Adresse existiert?

怪我咯
怪我咯Original
2017-07-16 09:53:122892Durchsuche

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.com
Fü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.com
Aber 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 ist

filter_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(&#39;bob@example.com&#39;, FILTER_VALIDATE_EMAIL));

var_dump(filter_var(&#39;http://example.com&#39;, 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn