IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Validation d'une adresse e-mail [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre confirmé Avatar de sarah65536
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 93
    Par défaut Validation d'une adresse e-mail
    J'essaie de faire une validation d'e-mail la plus complete possible.

    Je permet donc de mettres des points, je test qu'il y ai bien le @, qu'il soit sous la forme :

    xxxxxx@xxx.xxx
    xxx.xxx@xxx.xx
    xxx.xxx.xxx@xxx.xxx.xx
    xxx.xxx.xxx@xxx.xxx.xxx

    viola ce que j'ai utilisé :

    "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[.a-z0-9-]{3}[.a-z0-9-]*\.[a-z]{2,4}$"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[.a-z0-9-]{3}[.a-z0-9-]*\.[a-z]{2,4}$",$this->mail))
    {
         echo "l'e-mail n'est pas valide !";
    }
    Cela fonctionne comme je le souhaite, excepté que si deux points sont côtes à côte. il ne faut pas que ce cas puisse se produire.
    exemple :
    xxx.xxx@xx..xxx

    Quelqu'un pourrait m'aider ? parce que la, je m'embrouille beaucoup trop.

    Merci !

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 181
    Par défaut
    bonjour

    essaye avec ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    /^[A-Za-z0-9\.\-_]+[@][A-Za-z0-9\-\.]+[\.][A-Za-z][A-Za-z][A-Za-z]?$/
    a+

  3. #3
    Inactif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 101
    Par défaut
    Moi je fait ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function VerifierAdresseMail($adresse)
    {
       $Syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#';
       if(preg_match($Syntaxe,$adresse))
          return true;
       else
         return false;
    }

    ^[\w.-]+@ Commence (^) par au moins un caractère correspondant à la classe abrégée, ou un tiret, puis est suivi par un@.

    [\w.-]+ un ou plus de caractères correspondant à la classe abrégée ou un tiret (c'est le nom de domaine)

    \.[a-zA-Z]{2,6}$ un point, puis deux à six lettres, qui finissent la chaine (c'est la tld du nom de domaine).

  4. #4
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Par défaut
    Et si nous faisions un petit tour dans la FAQ ????
    http://php.developpez.com/faq/?page=mail#mail_verif

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 13
    Par défaut
    La FAQ n'est pas une bible non plus, elle ne donne pas toujours la meilleure solution pour arriver à ses fins.

    En l'occurrence je dirais :
    filter_var($email, FILTER_VALIDATE_EMAIL);

  6. #6
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 703
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 703
    Par défaut
    Citation Envoyé par Rezouce Voir le message
    La FAQ n'est pas une bible non plus, elle ne donne pas toujours la meilleure solution pour arriver à ses fins.

    En l'occurrence je dirais :
    filter_var($email, FILTER_VALIDATE_EMAIL);
    la fonction "filter_var" n'est pas encore au point non plus, elle refuse par exemple l'adresse "aaaa@domaine" alors qu'elle est valide si le domaine existe

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour, je dirai qu'il faut penser aussi aux adresses mail avec 4 caracteres apres le dernier point, comme :
    xxxxxx@xxxxxx.asso
    xxxxxx@xxxxxx.info
    xxxxxx@xxxxxx.name
    xxxxxx@xxxxxx.mobi
    ...
    (qui n'existaient pas avant ...)

  8. #8
    Membre confirmé Avatar de sarah65536
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 93
    Par défaut
    Re bonjour ! J'ai testé ce que m'a dit gilles974, mais ca ne marche pas.
    bonjour
    essaye avec ça

    Code :


    /^[A-Za-z0-9\.\-_]+[@][A-Za-z0-9\-\.]+[\.][A-Za-z][A-Za-z][A-Za-z]?$/


    a+
    Avec celles de kitten13 non plus
    Moi je fait ça

    Code :


    function VerifierAdresseMail($adresse)
    {
    $Syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#';
    if(preg_match($Syntaxe,$adresse))
    return true;
    else
    return false;
    }
    Et si nous faisions un petit tour dans la FAQ ????
    http://php.developpez.com/faq/?page=mail#mail_verif
    J'ai été voir dans la faq, mais dans la section regex pas dans la section mail. Quoiqu'il en soit, ce que propose la faq, ne vérifie pas assez bien la validité du mail car si je met 2 points côte à côte, j'ai toujours le même problème.

    Merci jreaux62 pour m'avoir fait penser à cela :
    Bonjour, je dirai qu'il faut penser aussi aux adresses mail avec 4 caracteres apres le dernier point
    Mon problème n'est toujours pas résolu. Si vous avez d'autres idées à me proposer...

  9. #9
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    A priori cette syntaxe vérifie la RFC 2822 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /^[-a-z0-9!#$%&\'*+\/=?^_`{|}~]+(\.[-a-z0-9!#$%&\'*+\/=?^_`{|}~]+)*@(([a-z0-9]([-a-z0-9]*[a-z0-9]+)?){1,63}\.)+([a-z0-9]([-a-z0-9]*[a-z0-9]+)?){2,63}$/i

  10. #10
    Membre confirmé Avatar de sarah65536
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 93
    Par défaut
    Désolé Bisûnûrs
    A priori cette syntaxe vérifie la RFC 2822 :
    Code :

    /^[-a-z0-9!#$%&\'*+\/=?^_`{|}~]+(\.[-a-z0-9!#$%&\'*+\/=?^_`{|}~]+)*@(([a-z0-9]([-a-z0-9]*[a-z0-9]+)?){1,63}\.)+([a-z0-9]([-a-z0-9]*[a-z0-9]+)?){2,63}$/i
    Mais ca ne fonctionne pas non plus.

    Ca me dit bien l'ereur si je met deux points à côté , mais quand l'adresse est sous le bon format : xxxx@xxx.xxx ça me met aussi l'erreur.


    Halalala ! C'est vraiment compliqué les regex...

  11. #11
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Je ne sais pas quel test tu fais, mais ceci fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    $regExp = '/^[-a-z0-9!#$%&\'*+\/=?^_`{|}~]+(\.[-a-z0-9!#$%&\'*+\/=?^_`{|}~]+)*@(([a-z0-9]([-a-z0-9]*[a-z0-9]+)?){1,63}\.)+([a-z0-9]([-a-z0-9]*[a-z0-9]+)?){2,63}$/i';
     
     
    if ( !preg_match( $regExp, 'xxx@xxx.xxx' ) ) {
      echo 'ko';
    }
    else {
      echo 'ok';
    }
    // Affiche ok
     
     
    if ( !preg_match( $regExp, 'xxx@xxx..xxx' ) ) {
      echo 'ko';
    }
    else {
      echo 'ok';
    }
    // Affiche ko

  12. #12
    Membre confirmé Avatar de sarah65536
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 93
    Par défaut
    Oups... La blonde !

    En effet cela fonctionne. Navré d'avoir douté de tes paroles.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/04/2011, 16h26
  2. [RegEx] Validation d'une adresse mail
    Par elvan49 dans le forum Langage
    Réponses: 6
    Dernier message: 18/12/2006, 12h32
  3. Réponses: 1
    Dernier message: 06/04/2006, 00h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo