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 :

REGEX "simple" champ prénom


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2015
    Messages : 29
    Par défaut REGEX "simple" champ prénom
    Bonjour,

    Pourriez-vous, svp, me venir en aide.
    J'ai du mal à comprendre pourquoi ma Regex ne fonctionne pas, et cela depuis bien trop de tps, elle est pourtant simple;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $pattern = "#^[A-ZÇÉÈÊËÀÂÎÏÔÙÛ]{1}[a-zçéèêëàâîïôùû]+[-]?[a-zçéèêëàâîïôùû]*#";
     
    if (preg_match($pattern,$prenom_post)) 
       {//Vrai je traite
       }
    else
       {//Erreur -> message d'erreur
       $erreur='Le champ Prénom contient des caractères non autorisés';
       }
    Explication du résulta attendu :
    ^[A-ZÇÉÈÊËÀÂÎÏÔÙÛ]{1} : Commence pas une lettre majuscule accentuée (liste) ou non
    [a-zçéèêëàâîïôùû]+ : Puis est suivi d'une ou plusieurs lettre(s) minuscule(s) accentuée (liste) ou non
    [-]? : Puis de 0 ou un tiret
    [a-zçéèêëàâîïôùû]* : et enfin d'aucune ou plusieurs lettre(s) minuscule(s) accentuée (liste) ou non

    Je vous remercie et reste impatiemment dans l'attente de vous lire,
    Bien Cdlmt.

    Kiiiint13

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    A priori, ta regex est Ok. En passant par PHP Live Regex, Jean-claude passe, Celira aussi, Stéphane pareil. Zorg42 ne passe pas, chaussette non plus.
    Tu devrais peut-être vérifier ce qui arrive dans $prenom_post (genre via un var_dump)

    Au passage, dans un prénom composé, il y a normalement une majuscule à chaque élément.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Salut,
    perso je comprends pas bien ta description sur le dernier match :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [a-zçéèêëàâîïôùû]* : et enfin d'aucune ou plusieurs lettre(s) minuscule(s) accentuée (liste) ou non
    tu veux dire "et enfin d'aucune ou plusieurs lettres Majuscules accentuées" ?
    si tu veux coller à ta description c'est : [^a-zçéèêëàâîïôùû]*
    pour la classe inverse à matcher a priori.
    Avec les REGEX un exemple à matcher est toujours plus simple pour l'analyse, si t'en as à fournir ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1/ Je ne vois pas trop l’intérêt de vérifier un prénom, surtout à notre époque, où on met n'importe quoi. (à lire : pires prénoms 2014 ! )

    2/ Personnellement, ta regex va me rapidement gonfler : je veux pouvoir écrire mon prénom tout en minuscules ou tout en majuscules, avec ou sans accents si je veux !
    (surtout si j'écris sur mon smartphone !)
    Mon prénom ? Jérôme Gaëtan !! (autant dire que je me sens concerné !)

    3/ Si la seule chose que tu souhaites vérifier est "uniquement des caractères autorisés" :
    • alpha, majuscule ou minuscule + lettres accentués
    • espace, tiret, apostrophe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #^([a-zàáâäçèéêëìíîïñòóôöùúûü \-\']+)$#Ui
    [EDIT] Je me rend compte dans mes essais qu'une majuscule accentuée ne passe pas ! (cas de "Éléa-Maud" ci-après)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #^([a-zA-ZàáâäæçéèêëîïôœùûüÿÀÂÄÆÇÉÈÊËÎÏÔŒÙÛÜŸ \-\']+)$#Ui
    Quelques prénoms :
    Méloîe
    Éléa-Maud
    Maëlys
    jean-rené la Taupe
    Léo-andréa
    Rock's-Ann
    4/ Enfin, si tu veux ENSUITE mettre des majuscules aux initiales (pour enregistrement en BdD, par exemple) :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $prenom = mb_convert_case ( $prenom,  MB_CASE_TITLE );
    Dernière modification par Invité ; 07/11/2015 à 08h53.

  5. #5
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2015
    Messages : 29
    Par défaut REGEX "simple" champ prénom
    Bonjour à tous,
    Merci pour vos réponses réactives et pour vos remarques constructives et pertinentes.

    @ Djakisback
    Non je voulais bien dire des « d'aucune ou plusieurs lettre(s) minuscule(s) accentuée (liste) ou non », dans l’objectif de prendre en charge les prénoms composés.

    @ Celira
    Merci, I’m crazy… désolé. Néanmoins ta remarque est très pertinente et m’a fait évoluer ma regex, voir ci-dessous.

    @ jreaux62
    Merci beaucoup pour ces remarques toutes aussi pertinentes ;

    1/Cela va vraiment dépendre du secteur d’activité, un forum pour jeux vidéos ou une interface web bancaire par exemple… tu me le concéderas je pense…

    2/Carrément !! Peut importe le type de site cela est gonflant !! A quand le cas passant surtout s’il y a plusieurs champs et un contrôle si poussé comme est mon cas.
    Pour palier ça je « nettoie » mes variables des erreurs de frappe/forme avant d’appliquer mes regex.
    De telle manière que la variable est automatiquement mise en minuscule avec une majuscule à la première lettre du prénom (et aussi cas du prénom composé, maintenant…), puis les lettres répétées et les espaces sont supprimés.
    Enfin, seulement j’applique ma regex..

    3/ Pblm laisse passer plusieurs tirets…

    4/Oui c’est ce que je fais avant d’appliquer ma regex.



    Voiçi donc la V2 de ma regex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	$regex_1 ="#^[A-ZÇÉÈÊËÀÂÎÏÔÙÛ]{1}([a-zçéèêëàâîïôùû]+|([a-zçéèêëàâîïôùû]+-[A-ZÇÉÈÊËÀÂÎÏÔÙÛ]{1}[a-zçéèêëàâîïôùû]+)){1,19}$#";
    Littéralement :
    Commencer par une lettre majuscule (accentuées ou non), puis collé à (et finir part..)
    [cas prénom simple] Soit de une à 19 lettres minuscules (accentuées ou non)
    OU
    [cas prénom composé] Soit de une à plusieurs lettres minuscules (accentuées ou non), puis d’un tiret et d’une lettre majuscule (accentuées ou non) et enfin de une à plusieurs lettres minuscules (accentuées ou non). 19 lettres au maximum

    Le champ accepte donc entre 2 et 20 caractères.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Alors, si j'écris JEROME ou jerome, ça ne passe pas.

    Je confirme : ça va me gonfler...

    Quant au nombre de caracteres :
    http://www.linternaute.com/savoir/ma...us-longs.shtml


    Et dans "Le 5ème élément" : Leeloo, de son nom complet Leeloominai Lekatariba Laminatchai Ekbat De Sebat !
    Dernière modification par Invité ; 08/11/2015 à 12h15.

Discussions similaires

  1. [MySQL] Problème de simple quote dans le champ de recherche
    Par mesken dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 29/03/2012, 10h05
  2. Sudo problème avec les simples quotes
    Par Tronche dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 23/03/2007, 12h02

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