Maison > développement back-end > tutoriel php > 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 ?

怪我咯
Libérer: 2023-03-14 06:32:02
original
2981 Les gens l'ont consulté

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));
Copier après la connexion
Sortie :

string(21) "lastchiliarch@163.com"
bool(false)
string(7) 1@a.com
Copier après la connexion
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"));
Copier après la connexion
Sortie :

  bool(true)
  bool(false)
Copier après la connexion
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;
    }
  }
Copier après la connexion
Sortie :

invalid email: 1@a.com
Copier après la connexion
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));

?>
Copier après la connexion
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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal