Comment puis-je valider la valeur d'entrée est une adresse e-mail valide en utilisant php5. Maintenant j'utilise ce code
function isValidEmail($email){
$pattern = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$";
if (eregi($pattern, $email)){
return true;
}
else {
return false;
}
}
mais il montre une erreur obsolète. Comment puis-je résoudre ce problème. Aidez-moi, s'il vous plaît.
php
regex
validation
email-validation
apprenant
la source
la source
eregi
est une fonction de) est obsolète. Utilisez plutôt PCRE .Réponses:
Vous pouvez utiliser la
filter_var()
fonction, qui vous offre de nombreuses options pratiques de validation et de désinfection.Manuel PHP filter_var ()
Disponible en PHP> = 5.2.0
Si vous ne voulez pas changer votre code qui reposait sur votre fonction, faites simplement:
Remarque : Pour les autres utilisations (où vous avez besoin de Regex), la
ereg
famille de fonctions obsolète (POSIX Regex Functions) doit être remplacée par lapreg
famille ( PCRE Regex Functions ). Il y a un petit nombre de différences, la lecture du manuel devrait suffire.Mise à jour 1 : Comme indiqué par @binaryLV :
Ce bogue a déjà été corrigé.
Mise à jour 2 : Cette méthode sera bien sûr valider
bazmega@kapa
comme une adresse email valide, car en fait c'est une adresse email valide. Mais la plupart du temps sur l'Internet, vous pouvez également l'adresse e - mail pour avoir un TLD:[email protected]
. Comme suggéré dans ce billet de blog (lien posté par @Istiaque Ahmed ), vous pouvez augmenterfilter_var()
avec une regex qui vérifiera l'existence d'un point dans la partie domaine (ne vérifiera cependant pas un TLD valide ):Comme @Eliseo Ocampos l'a souligné, ce problème n'existe qu'avant PHP 5.3, dans cette version, ils ont changé l'expression régulière et maintenant il effectue cette vérification, vous n'avez donc pas à le faire.
la source
eregi
, il semble qu'il utilise PHP 5.3. Mais oui, il est important de le mentionner (pour les autres)).FILTER_VALIDATE_EMAIL
, qui entraînait une erreur de segmentation lors de la validation de grandes valeurs. Une solution de contournement simple et sûre pour cela consiste à utiliserstrlen()
avantfilter_val()
. Je ne suis pas sûr de la version 5.3.4 final, mais il est écrit que certaines versions de snapshot 5.3.4 ont également été affectées.filter_val
oufilter_var
?Consultez les notes sur http://www.php.net/manual/en/function.ereg.php :
la source
C'est un ancien article mais je vais partager une de mes solutions car personne ne mentionne ici un problème auparavant.
La nouvelle adresse e-mail peut contenir des caractères UTF-8 ou des noms de domaine spéciaux tels que
.live
,.news
etc.De plus, je trouve que certaines adresses e-mail peuvent être en cyrilique et dans tous les cas les regex standard ou
filter_var()
échoueront.C'est pourquoi j'ai fait une solution pour cela:
Cette fonction fonctionne parfaitement pour tous les cas et formats de courrier électronique.
la source
J'utilise toujours ceci:
la source
alex@.
il renvoie toujours vrai là où ce n'est pas une adresse e-mail valide.Éloignez -vous
regex
et desfilter_var()
solutions pour la validation email. Voir cette réponse: https://stackoverflow.com/a/42037557/953833la source
Utilisation:
la source
Avant la validation de l'e-mail: vous devez d'abord supprimer tous les caractères illégaux de l'e-mail.
après cela, validez votre adresse e-mail à l'aide de cette
filter_var()
fonction.Pour par exemple
la source