Email validation avec filter_var

Il exite maintes functions PHP qui permettent de valider ou non une adresse email.

Ces fonctions sont plus ou moins importantes et efficaces.

Voici un exemple :

function is_email_valid($email) {
    $atom   = '[-a-z0-9!#$%&\'*+\\/=?^_`{|}~]';   // caractères autorisés avant l'arobase
    $domain = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)'; // caractères autorisés après l'arobase (nom de domaine)
   
    $regex = '/^' . $atom . '+' .   // Une ou plusieurs fois les caractères autorisés avant l'arobase
    '(\.' . $atom . '+)*' .         // Suivis par zéro point ou plus
				   // séparés par des caractères autorisés avant l'arobase
    '@' .                           // Suivis d'un arobase
    '(' . $domain . '{1,63}\.)+' .  // Suivis par 1 à 63 caractères autorisés pour le nom de domaine
				   // séparés par des points
    $domain . '{2,63}$/i';          // Suivi de 2 à 63 caractères autorisés pour le nom de domaine
   
    // test de l'adresse e-mail
    if (preg_match($regex, $email)) {
        return "E-mail is valid"; // Valide
    } else {
        return "E-mail is not valid"; // Non valide
    }
}


Mais que diriez vous de pouvoir le faire en une seule ligne. Peut être que vous connaissez déjà cette fonction PHP très intéressante qu'est filter_var ? Si c'est le cas, je ne vous apprends rien... Mais pour les autres, voici comment valider une adresse email très simplement :

function filter_email($email) {
    if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        return "E-mail is not valid";
    } else {
        return "E-mail is valid";
    }    
}


Cette fonction PHP est disponible depuis la version PHP 5.2 et sera également disponible en PHP 7.

Vous pouvez allez plus loin avec les filtres autorisés :

  1. Filtres de validation
  2. Filtres de nettoyage
  3. Autres filtres
  4. Drapeaux des filtres

Vous pouvez consulter cette page pour en savoir d'avantages ;-)

Les nombreux filtres peuvent vous permettre de valider les adresses IP, les URLs, les valeurs booléennes, les chiffres décimaux, etc.

Retrouvez mon code sur le standalone ici.

blog comments powered by Disqus