Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/12/2007, 14h30   #1
Candidat au titre de Membre du Club
 
Inscription : décembre 2007
Messages : 20
Détails du profil
Informations personnelles :
Âge : 18

Informations forums :
Inscription : décembre 2007
Messages : 20
Points : 14
Points : 14
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 :
if ("[^a-z]","$code_postal")
Merci a tous
C'est simple pour vous mais moi je trouve pas
Mr[ben] est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 15h13   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
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 :
if (preg_match('~[^a-z]~', $code_postal))
Initiation aux expressions régulières en PHP.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 15h22   #3
Candidat au titre de Membre du Club
 
Inscription : décembre 2007
Messages : 20
Détails du profil
Informations personnelles :
Âge : 18

Informations forums :
Inscription : décembre 2007
Messages : 20
Points : 14
Points : 14
Oui merci j'ai pas re-posté mais moi j'ai utilisé ereg :
Code :
 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 :
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
Mr[ben] est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 15h38   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
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) ?
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 15h41   #5
Candidat au titre de Membre du Club
 
Inscription : décembre 2007
Messages : 20
Détails du profil
Informations personnelles :
Âge : 18

Informations forums :
Inscription : décembre 2007
Messages : 20
Points : 14
Points : 14
Merci pour les infos ba je verifie juste si le code postal est bon .
J'y arrive pas :'(
Mr[ben] est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 15h55   #6
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
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 :
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
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 15h57   #7
Candidat au titre de Membre du Club
 
Inscription : décembre 2007
Messages : 20
Détails du profil
Informations personnelles :
Âge : 18

Informations forums :
Inscription : décembre 2007
Messages : 20
Points : 14
Points : 14
Tu peux me tutoyer xD
En fait merci beacoup j'y suis arivé en fait les guillmets ou ' autour de ma variable ne servait a rien
Mr ben the super noob codeur =)
Mr[ben] est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h50.


 
 
 
 
Partenaires

Hébergement Web