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 ?
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.comPour 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.comMais 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('bob@example.com', FILTER_VALIDATE_EMAIL)); var_dump(filter_var('http://example.com', 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!