J'utilise PHP version 5.3.10. Voici le code :
<?php $email = "test@example.c"; if (filter_var($email, FILTER_VALIDATE_EMAIL)) echo "Email: ".$email." correct"; else echo "email not correct"; ?>
Il renvoie : "Email : test@example.c est correct.
Je pense qu'un domaine de premier niveau avec un seul caractère est incorrect (d'après cette liste : http://data.iana.org/TLD/tlds-alpha -by -domain.txt, je ne savais pas qu'il existait un domaine de premier niveau de longueur de caractères)
.Alors, le filtre FILTER_VALIDATE_EMAIL fonctionne-t-il correctement ?
FILTER_VALIDATE_EMAIL ne prend pas en charge PHP 5.2.14
Vérifier les adresses e-mail est un peu compliqué. Jetez un oeil à cette liste:
Adresse email valide
Abc.example.com (un caractère @ doit séparer le local et le domaine pièces)-
A@b@c@example.com (un seul @ est autorisé en dehors des guillemets)-
a"b(c)d,e:f;gi[jk]l@example.com (aucun des caractères spéciaux
dans cette partie locale sont autorisés les guillemets extérieurs)-
juste"pas"right@example.com (les chaînes entre guillemets doivent être séparées par des points, ou
le seul élément composant la partie locale)-
il s'agit de "notallowed@example.com (les espaces, les guillemets et les barres obliques inverses peuvent
n'existe que lorsqu'il se trouve dans des chaînes entre guillemets et précédé d'une barre oblique inverse)-
ceci toujours "notallowed@example.com (même en cas d'évasion (précédé de
une barre oblique inverse), les espaces, les guillemets et les barres obliques inverses doivent toujours être
contenu par des guillemets)-
Sourcehttp://en.wikipedia.org/wiki/Email_address
La plupart des implémentations de vérification des e-mails sont "boguées", mais l'implémentation php fonctionne bien car elle accepte toutes les adresses e-mail couranteshttp://www.php.net/manual/en/filter.filters.validate.php
A propos de l'adresse "partielle" qui n'existe pas. Dans la section domaine, un commentaire dans le code source (dans ext/filter/logical_filters.c) prouve ce rejet :