Maison  >  Article  >  développement back-end  >  Saviez-vous que php a sa propre méthode pour vérifier si l’adresse e-mail existe ?

Saviez-vous que php a sa propre méthode pour vérifier si l’adresse e-mail existe ?

怪我咯
怪我咯original
2017-07-16 09:53:122890parcourir

Il existe de nombreuses façons de vérifier les adresses e-mail en PHP. La plus couramment utilisée est l'expression régulière, mais les expressions régulières sont gênantes. Il existe une méthode intégrée en PHP qui peut vérifier. adresses e-mail, comme suit Donnons une introduction détaillée, jetons un coup d'œil ensemble

Mon PHP est livré avec sa propre méthode de vérification.

filter_var

filter_var est une méthode de filtrage de variables intégrée à PHP, qui fournit de nombreux Filter peut être utilisé pour vérifier des entiers, des nombres à virgule flottante, des adresses e-mail, des URL, des adresses MAC, etc.

si filter_var renvoie false,

$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));
Sortie :

string(21) "lastchiliarch@163.com"
bool(false)
string(7) 1@a.com
Pour le format d'e-mail illégal asb, false est renvoyé, mais pour 1@a.com adopté, mais il reste encore quelques défauts.

Cependant, si les règles générales sont adoptées, 1@a.com sera considérée comme une adresse e-mail légitime. Existe-t-il donc un moyen de la vérifier plus précisément ?

checkdnsrr

checkdnsrr est en fait utilisé pour interroger l'enregistrement DNS de l'hôte spécifié. Nous pouvons l'utiliser pour vérifier si la boîte aux lettres existe.

Pour 1@a.com, l'enregistrement MX n'existe définitivement pas.

$email = "lastchiliarch@163.com";
  var_dump(checkdnsrr(array_pop(explode("@",$email)),"MX"));
  $email = "1@a.com";
  var_dump(checkdnsrr(array_pop(explode("@",$email)),"MX"));
Sortie :

  bool(true)
  bool(false)
Comme vous pouvez le voir, c'est parfait Le seul inconvénient est qu'il est trop lent. Après tout, c'est une requête réseau. Par conséquent, il n’est pas approprié d’utiliser cette méthode pour vérifier simultanément un grand nombre de boîtes aux lettres.

filter_var+checkdnsrr

Nous pouvons combiner filter_var et checkdnsrr pour la vérification. Pour la plupart des boîtes aux lettres illégales, filter_var sera certainement utilisé. , et vous pouvez utiliser

checkdnsrr pour un jugement plus approfondi.

$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;
    }
  }
Sortie :

invalid email: 1@a.com
Mais il convient de noter que puisqu'il vérifie uniquement l'enregistrement MX, on peut seulement juger que 163.com existe, mais il ne peut pas indiquer que l'utilisateur lastchiliarch existe.

Si vous souhaitez déterminer plus précisément l'existence de la boîte aux lettres, vous pouvez uniquement vous connecter au serveur SMTP pour la vérifier.

Introduit la

Email Verification, la méthode propre à PHP pour vérifier si l'e-mail, l'URL et l'IP sont légaux. Voici une introduction :

La principale est

. Fonction filter_var.

Syntaxe
filter_var(variable, filtre, options)variable Obligatoire. Spécifie les variables à filtrer.
filtre en option. Spécifie l'ID du filtre à utiliser.
options spécifie un tableau contenant des indicateurs/options. Vérifiez les indicateurs et options possibles pour chaque filtre.

Filtres PHP

Exemple n°1 Un exemple de filter_var()

<?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));

?>
La routine ci-dessus Sortie :

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn