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 de code_postal [Débutant(e)] [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 31

    Informations forums :
    Inscription : Décembre 2007
    Messages : 20
    Par défaut Regex de code_postal
    Bonjour a tous .Je suis le plus nul codeur en regex .
    J'ai fait cette regex mais elle m'indique une parse error Fallait pas atendre de miracle
    Je vous montre mon bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ("[^a-z]","$code_postal")
    Merci a tous
    C'est simple pour vous mais moi je trouve pas

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Les expressions régulières en PHP requièrent l'utilisation de fonctions (preg_match ici). Leur support n'étant pas nativement ancré en PHP comme c'est le cas dans d'autres langages (Perl, Ruby, ...).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (preg_match('~[^a-z]~', $code_postal))
    Initiation aux expressions régulières en PHP.

  3. #3
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 31

    Informations forums :
    Inscription : Décembre 2007
    Messages : 20
    Par défaut
    Oui merci j'ai pas re-posté mais moi j'ai utilisé ereg :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if (preg_match('#[^a-z]#','$code_postal'))
    Mais il marche pas il me dit tout le temp que mon codepostal n'est pas valide ...
    Edit : Voici le code entier si vous voulez :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    <?php
    include ("includes/superinclude.php");
    $erreur="";  //Initialisation de la variable erreur
    $mail = $_POST['mail'];//securisation
    $code = (mysql_real_escape_string(htmlspecialchars($_POST['code_postal'])));//securisation
    $pass = (mysql_real_escape_string(htmlspecialchars($_POST['password'])));//securisation
    $nom = (mysql_real_escape_string(htmlspecialchars($_POST['pseudo'])));//securisation
    $code_postal = stripslashes($code);
    $password = stripslashes($pass);
    $pseudo = stripslashes($nom);
    $reponse = mysql_query("SELECT * FROM membres WHERE pseudo = '$pseudo' "); //on recuper les membres
    $num_rows = mysql_num_rows($reponse);
     
    /*Dans ce debut de code je recupere les données par post
    **J'utilise des peties fonctions
    **et je recupere le champ dans la bdd ou il ya le pseudo que l'utilisateur
    **Le num rows revoi 0 sile pseudo n'est pas choisi et 1 si il existe deja
    */
     
      if (strlen($pseudo) < 15  ) //si pseudo a mois de 15 caracters
        {
               if (strlen($password) < 15 ) //si le pass a moins de 15 caracters
                 {
                                       //if(!preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#","$mail"))
                                      #
                                           if(strpos($mail, '@')) //y a bien un @ dans $mail 
                                         {  
                                                 if (ereg("#[^a-z]#i","$code_postal"))
    											 {
                                                        if ($num_rows == 0 )  //si le pseudon' est pas deja enregistre ...
                                                       {
                                 echo 'Vous etes maintenat membre de notre super communauté Mr ou madame '.$pseudo ;
                    mysql_query("INSERT INTO membres VALUES('','$pseudo','$password','$mail','$code_postal')");
                                                } else {$erreur.= ' Pseudo deja utilisé désolé' ; }
     
                                              } else { echo 'Votre code postal n\'est pas valide ';}
     
                                         } else {$erreur.='Votre mail doit contenir un \'@ \' ';}
     
                 } else {$erreur.= 'Votre password est trop grand';}
     
            } else { $erreur.= 'Votre pseudo est trop grand';}
            ?>
    <meta http-equiv="Refresh" content="4;listemembres.php" />
    <?php
    echo $erreur;
    include ("includes/footer.php");
    ?>
    Merci d'avance ca me coincea mort

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Les fonctions POSIX (fonctions ereg*) - déconseillées - ne requièrent pas de délimiteurs contrairement à celles de l'extension PCRE (preg*) et disposent encore moins de leurs options (l'insensibilité à la casse, modificateur i, pour les fonctions preg* auraient été à remplacer par la fonction équivalente eregi*).

    Est-il bien normal, si je m'en réfère au nom de votre variable, de tester qu'un code postal comporte tout autre caractère que les caractères alphabétiques minuscules (les classes [a-z] ou [:lower:] en d'autres termes) ?

  5. #5
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 31

    Informations forums :
    Inscription : Décembre 2007
    Messages : 20
    Par défaut
    Merci pour les infos ba je verifie juste si le code postal est bon .
    J'y arrive pas :'(

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Prenons un code postal français métropolitain qui est constitué (uniquement/exactement) de 5 chiffres. On pourrait donc écrire cela de la sorte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (preg_match('~^\d{5}$~D', $_POST['code_postal'])) {
        // Code postal OK
    } else {
        // Invalide
    }
    (\d étant équivalent à [0-9] ou encore [[:digit:]])

    Mais je ne sais pas si ça vous avance plus et n'hésitez pas à faire des tests via un script à part

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

Discussions similaires

  1. [Regex] Plusieurs motifs
    Par sissi_l dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 29/06/2004, 15h15
  2. [jakarta][regex]Matcher mot en entier.
    Par thibaut dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 26/05/2004, 14h33
  3. [Regex] Vérifier qu'une chaîne respecte une expression régulière
    Par PeteMitchell dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 13/05/2004, 15h22
  4. [regex][string] replaceAll bogué ?
    Par 7eme dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 13/11/2003, 17h36
  5. Cherche regex...
    Par laurent_h dans le forum C
    Réponses: 4
    Dernier message: 31/03/2003, 12h24

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