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 15/03/2007, 17h43   #1
Membre habitué
 
Inscription : octobre 2006
Messages : 325
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 325
Points : 137
Points : 137
Par défaut Besoin d'aide pour améliorer le résultat

voici mon code
Code :
1
2
3
4
if (!preg_match('#^[a-zA-Z ()]+$#', $mun_nombre))
{
	echo "Nombre incorecto"."<br />";
}
cette regex me saire a verifier si le champ mun_nombre uniquement de lettre (majuscule ou minuscule) il peut y avoir un ou plusieur espace ainssi que des parenthese ouvrante et fermente

je voudrais pouvoir rajouter des lettre special comme :
ñ
à
ò
ì
.
.
.


comment doit-je modifier ma regex pour quelle accepte c'est caracteres?
merci beaucoup de votre aide.




j'ai la meme question pour la regex suivante
Code :
preg_match('#^[0-9, ]+$#', $mun_superficie)
celle si permet de verifier que la variable $mun_superficie ne contien que des chiffre espace et virgule mais je voudrait qu'il puise y avoir une seule virgule ou pas de virgule mais pas deux virgule par exemple
pour les espaces et le chiffre il peut y en avoir plusieur c'est pas un probleme
merci
teen6517 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2007, 19h07   #2
Membre éprouvé
 
Avatar de goodpz
 
Inscription : février 2007
Messages : 475
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 475
Points : 474
Points : 474
Code :
preg_match('#^[[:alpha:] ()]+$#', $mun_nombre);
Pour la 2ième, substr_count fera l'affaire car guère possible de faire ça avec une seule expression régulière:
Code :
substr_count($mun_superficie, ',') < 2 && preg_match('#^[0-9, ]+$#', $mun_superficie);
goodpz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2007, 19h22   #3
Membre habitué
 
Inscription : octobre 2006
Messages : 325
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 325
Points : 137
Points : 137
ok merci de ton aide

je croi que j'ai a peut pres saisie comment sa marche merci beaucoup

Par hasar taurait pas un tuto a me conseiller pour les regex pasque pour avoir des explication sur le fonctionnement des regex sur le forum ya jamais personne qui te répond

merci
teen6517 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2007, 19h26   #4
Membre éprouvé
 
Avatar de goodpz
 
Inscription : février 2007
Messages : 475
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 475
Points : 474
Points : 474
Je pense (je suis même sur) qu'il y a pas mal de tuto en français sur les expressions rationnelles sur ce site. Sinon, il y a toujours la doc php http://fr2.php.net/manual/en/referen...ern.syntax.php et http://pcre.org (pcre étant le moteur de regex utilisé par les fonctions preg_*)
goodpz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2007, 01h30   #5
Membre habitué
 
Avatar de daniel61
 
Inscription : décembre 2006
Messages : 109
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 109
Points : 120
Points : 120
Citation:
Envoyé par teen6517
Code :
preg_match('#^[0-9, ]+$#', $mun_superficie)
celle si permet de verifier que la variable $mun_superficie ne contien que des chiffre espace et virgule mais je voudrait qu'il puise y avoir une seule virgule ou pas de virgule mais pas deux virgule par exemple
pour les espaces et le chiffre il peut y en avoir plusieur c'est pas un probleme
merci
Citation:
Envoyé par teen6517
une seule virgule ou pas
les caractères de base réprésentant les répétitions sont '*' pour 0 ou plusieurs fois, '+' pour 1 ou plusieurs fois, '?' pour 0 ou 1 fois. donc le point de départ de l'expression doit être ',?' pour dire 0 ou 1 virgule, car c'est ta seule exception.

Citation:
Envoyé par teen6517
ne contien que des chiffre espace et virgule
le cas de la virgule est réglé... reste les autres caractères que tu avais déjà bien énuméré '[0-9 ]'... si la seule virgule acceptée peut-être à n'importe quel endroit dans la chaine source, alors elle a 0 ou plusieurs fois les caractères '[0-9 ]' à sa gauche et 0 ou plusieurs fois les caractères '[0-9 ]' à sa droite. le caractère de répétition '*' est tout indiqué.

ça donne [0-9 ]*,?[0-9 ]*... comme tu sembles le savoir, le caractère ^ représente le début de la ligne (ou chaine) et le caractère $ représente la fin de la ligne (ou chaine).

le code
Code :
1
2
 
preg_match('#^[0-9 ]*,?[0-9 ]*$#', $mun_superficie)
s'impose de lui même et tu en étais proche.

Citation:
Envoyé par teen6517
Par hasar taurait pas un tuto a me conseiller pour les regex pasque pour avoir des explication sur le fonctionnement des regex sur le forum ya jamais personne qui te répond
au début, il est effectivement frustrant d'essayer de comprendre ce qui resemble plus à une incantation en provenance directe d'une tombe égyptienne. la pratique est la seule façon de rendre ces hiéroglyphes aussi limpides que les lacs d'il y a 1 million d'années. il ne faut pas se décourager, mais persévérer en s'imposant des exercices simples au début et, au besoin, de venir poser une question extrêmement précise... tu progresseras très vite si tu en as vraiment l'intention.
daniel61 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2007, 08h43   #6
Membre habitué
 
Inscription : octobre 2006
Messages : 325
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 325
Points : 137
Points : 137
enfin une vrai explication merci beaucoup a toi daniel61

et merci pour les tutos goodpz

je vais les buchets un peut et vait commencer a faire des exo dessu
car comme la dit notre ami daniel61
rein de vaux la pratique pour assimiller et comprendre ce langage d'outre tombe
teen6517 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 21h10.


 
 
 
 
Partenaires

Hébergement Web