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'un champ prénom


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut Validation d'un champ prénom
    Salut tout le monde,

    voila je dois checker la validité d'un champ prénom. donc il ne dois pas contenir de numéro ni que caractères spéciaux mise à part le "-" pour un prénom composé.

    je pense que la meilleure méthode pour le faire c'est de faire un bon regex mais je ne sais vraiment pas comment le faire... est-ce que quelqu'un pourrait me donner un petit exemple ?

    pour le moment jai que sa lol

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $regexNom = '`^[a-zA-Z-]+$`';
    jaimerai encore savoir comment lui dire que le trait d'union ne dois pas etre en début de chaine ni a la fin et qu'il accèpte les accent ? merci

  2. #2
    Membre chevronné
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Par défaut
    Essaye ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $prenom = 'rené';
     
    if( preg_match('#^[^-][[:alpha:]-]+$#', $prenom ) )
      echo 'ok';
    else 
      echo 'pas ok';

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut
    salut !

    merci mais sa ne fonctionne pas correctement ! si je met un "-" au début il dis que cest faux donc sa sa marche mais si je le met à la fin, il dis que cest juste ... donc il faut encore checker que si on le met a la fin, il renvoie false

    et si ya un accent ou un truc dans le genre il renvoie false aussi donc cest pas encore sa...

  4. #4
    Membre chevronné
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Par défaut
    Pour les accents, normalement alpha les inclus dedans donc je vois pas.

    j'avais pas vu que tu voulais interdire le tiret en fin de chaine également.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $prenom = 'rené';
     
    if( preg_match('#^[^-][[:alpha:]-][^-]+$#', $prenom ) )
      echo 'ok';
    else 
      echo 'pas ok';
    Chez moi j'ai true, pour rené, re-né, et false pour -rené, rené-

  5. #5
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut
    sa marche mais moi pour ne-né jai false--- il accepte pas du tout les tiret...

  6. #6
    Membre chevronné
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Par défaut
    Ah oui désolé, j'ai mis le + en fin de masque

    C'est
    Code x : Sélectionner tout - Visualiser dans une fenêtre à part
    '#^[^-][[:alpha:]-]+[^-]$#'

    Par contre les chiffres seront également interdits avec ce masque.

  7. #7
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut
    merci mais tu es sur que [alfa] soit correcte ? parce que maintenant si je tape marie-noé il return true mais si ya qqch après, une simple lettre sa return false

  8. #8
    Membre chevronné
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Par défaut
    Ben oui

    Si t'as un problème avec, au lieu de [:alpha:], utilise \w, mais ça revient au même.

  9. #9
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut
    ouais ok mais cest pas normal que lorsque je tape marie-noél il revoie false alors que si je tape marie-noel il renvoie true non ?

    il dois encore y avoir une tite erreur dans le regex a mon avis

  10. #10
    Membre chevronné
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Par défaut
    Je pense que ton problème est ailleurs, chez moi marie-noël renvoi true, donc les lettres accentuées sont bien prises en compte.

  11. #11
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Par défaut
    Citation Envoyé par cyrill
    il dois encore y avoir une tite erreur dans le regex a mon avis
    redonne le regexp que tu utilise ?

  12. #12
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut Fusion ( une minute d'intervalle... )
    ben voici un extrait de mon code ... je ne voit pas vraiment ou est le problème...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $regexNom = '#^[^-][[:alpha:]-][^-]+$#';//regex pour spécifier ce que l'on désire dans la chaine
     
    				if(!preg_match($regexNom,$value)){
    					$str .= $instance_lang -> Loadlang('texteCheckNomCaractInscription').'<br>';
    					$error = true;
    				}else{
    					$str .= '';
    				}
    ???

    Citation Envoyé par Maxoo
    redonne le regexp que tu utilise ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $regexNom = '#^[^-][[:alpha:]-][^-]+$#';
    voila

  13. #13
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Par défaut
    ton regexp marche super !!
    tu peux la tester en live ici : http://elbong.free.fr/regexotron/

    Mais si ton code ne marche pas, faut peut etre voir ce qui arrive dans $value !!

    Peut être que c'est pas é mais &eacute ??

  14. #14
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut
    hum ouais bizare... faut que check sa mais normalent cest un string parce que je crée cette variable en js de la maniere suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var value = document.getElementById(mode).value;
    ensuite j'envoie à une autre page

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $value = $_POST['value'];
    //oui oui cest bien du post qui arrive lol

    mais bon avant d'envoyé mon post je fais
    cest surement pour sa non ?

  15. #15
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut
    hum cest a 99% sa ! parce que encode_URI fait que les caractères spéciaux sont transformés en séquences de signes ASCII.

    donc je devrai faire utiliser la fonction decodeURI() avant de mettre $_post['value'] dans la variable $value cest bien sa ?

    ya t'il possibilité de décoder sa en php et non pas en js ? donc d'avoir la meme fonction que decodeURI() mais en php ?

  16. #16
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Par défaut
    decodeURI fait quoi ?

    moi je serai toi je ferai le test regexp sur la value "nature" donc é et pas un caractère encodé ...

  17. #17
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut
    Citation Envoyé par Maxoo
    decodeURL fait quoi ?

    moi je serai toi je ferai le test regexp sur la value "nature" donc é et pas un caractère encodé ...
    ben l'inverse de encodeURL donc il transforme tous les caractére ASCII en sa valeur binaire...

    Ouais mais cest pas possible dans cas d'application de faire sa avant lol parce que cest 1200 lignes de code en ajax pour checker un gros formulaire et on px pas le faire avant d'avoir encoder $value lol

  18. #18
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Par défaut
    Bonjour,

    Je viens relancer ce post, car je cherche aussi à tester la validité d'un prénom à l'aide d'une expression régulière et je suis confronté au problème suivant, les caractères accentués ne sont acceptés qu'en début ou fin de chaine.

    voici le contrôle que je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    !ereg('^[^-][[:alpha:]-]+[^-]$', $prenom)
    et les résultats :
    benoit : true
    Jean-Paul : true
    émile : true
    Jérôme : false
    Jérô : false
    Jerô : true
    Marie-noë : true
    Marie-noël : false

  19. #19
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Par défaut
    à force de torturer mon expression régulière, j'ai pu légérement avancer.

    Les accents sont acceptés en début ou fin car [^-] signifie n'importe quel caractère à l'exception de "-".

    C'est donc un pas en avant pour trois pas en arrière, avec des caractères accentués en première ou dernière position ne m'interesse pas et en plus avec l'expression ci-dessus, je peux avoir des chiffres ou autres caractères en début ou fin de chaine.

    Donc je suis reparti sur une nouvelle expression :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^[a-zA-Z]+(-[a-zA-Z]+)?$
    ca me semble meilleur que la précédente, mais je bute toujours sur les caractères accentués...

    Suis-je obligé de les inclure individuellement dans mon expression au risque d'en oublier ?
    [a-zA-Zéèçàùâêûîôäëüïö]

  20. #20
    Membre expérimenté Avatar de daniel61
    Inscrit en
    Décembre 2006
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 139
    Par défaut
    Citation Envoyé par bigben99
    Suis-je obligé de les inclure individuellement dans mon expression au risque d'en oublier ?
    [a-zA-Zéèçàùâêûîôäëüïö]
    avec les fonctions POSIX, oui. mais avec les fonctions PCRE, c'est selon la configuration locale. la fonction équivalente est preg_match().

Discussions similaires

  1. Ne valider que les champs <INPUT TEXT apparent
    Par bilou95 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 25/05/2007, 17h14
  2. CustomValidator : Validation de deux champs
    Par trihanhcie dans le forum ASP.NET
    Réponses: 9
    Dernier message: 30/03/2007, 13h02
  3. [ODBC] Valider formulaire avec champs vides
    Par dorot dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 12/07/2006, 18h15
  4. [C# 2.0] Forcer la validation d'un champ
    Par oodini dans le forum Windows Forms
    Réponses: 4
    Dernier message: 06/07/2006, 19h47
  5. [WD9] Validation d'un champ de saisie avec touche entrée
    Par EpOnYmE187 dans le forum WinDev
    Réponses: 11
    Dernier message: 13/01/2006, 16h28

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