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 :

Expressions régulières code postaux [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Octobre 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 9
    Par défaut Expressions régulières code postaux
    Bonjour,
    J'ai une fonction qui vérifie si le code postal rentré dans un champ est valide ou non. Le problème c'est que lorsque je rentre u code postal de plus de 5 chiffres, la fonction me considère que c'est valide...
    Où est mon erreur ??? Merci d'avance.

    Ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function validCodePostal($cp) {
    	$ereg  = '([0-9]{4,5})';   // format d'un code postal belge et français
    	// test du code postal
    	if (ereg($ereg, $cp)) {
    		return true;
    	}
    	else {
    		return false;
    	}
    }

  2. #2
    Membre confirmé Avatar de Halex78
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 75
    Par défaut
    Hello, ereg est dépréciée, utilise plutôt les PCRE.
    La syntaxe que tu utilises match les mots faisant de 4 à 5 lettres ne contenant que des chiffres dans la chaine que tu lui passes en paramètre.
    Donc si ta chaine est une suite de 6 chiffres, il te retournera un résultat positif puisqu'effectivement de telles suites de chiffres sont trouvables dans une suite à 6 chiffres.
    En supposant que la chaine n'est que le code postal, ceci devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function validCodePostal($cp){
    if(preg_match('#^[0-9]{4,5}$#',$cp){return true;}else{return false;}
    }

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Par défaut
    tu peu faire comme ca aussi ( avais pas vu que tu avais complété ta réponse )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if( !is_numeric($string) || ( strlen($string)!=4  && strlen($string)!=5) )
    {
    	return false;
    }

  4. #4
    Membre habitué
    Inscrit en
    Octobre 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 9
    Par défaut
    Merci...

  5. #5
    Membre confirmé Avatar de Halex78
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 75
    Par défaut
    Oui ascito, ta méthode évite l'utilisation des regex, mais ton code renvoie "rien" ou "false",et donc jamais "true", autant s'épargner l'utilisation du if :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    is_numeric($string) && ( strlen($string)==4  || strlen($string)==5) //Cette expression renvoie déjà le booléen qui nous intéresse...

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

Discussions similaires

  1. expressions régulière code view
    Par didoboy dans le forum VBScript
    Réponses: 0
    Dernier message: 16/06/2009, 10h58
  2. Expressions régulières pour rechercher dans le code
    Par Davboc dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 20/11/2007, 12h03
  3. Expressions régulières pour filtrer du code HTML
    Par Junta dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 14/11/2006, 18h00
  4. [Regexp]Expressions régulières et code HTML
    Par Rayool dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 22/09/2006, 11h01
  5. Passage algo - code pour génération d'expressions régulières
    Par deedoo dans le forum Général Python
    Réponses: 6
    Dernier message: 11/08/2005, 15h32

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