Contrôler un mot par expression régulière
13 messages
• Page 1 sur 1
-

tryan - WRInaute passionné

- Messages: 2355
- Inscription: 20 Fév 2005
Contrôler un mot par expression régulière
Bonjour,
Je ne parviens pas à contrôler la validité d'un mot transmit par $_GET pouvant contenir uniquement des lettres minuscules avec ou sans tiret :
Visiblement mon code est faux ..
Merci
Je ne parviens pas à contrôler la validité d'un mot transmit par $_GET pouvant contenir uniquement des lettres minuscules avec ou sans tiret :
- Code: Tout sélectionner
if(!ereg("^[a-z-]$", $_GET['b']))
{
echo 'erreur';
}
Visiblement mon code est faux ..
Merci
-

tryan - WRInaute passionné

- Messages: 2355
- Inscription: 20 Fév 2005
Re: Contrôler un mot par expression régulière
Je n'ai pas d'erreur particulière mais si dans mon url (donc dans $_GET['b']) je remplace le nom d'un dossier virtuel (ex :/voiture/) par (ex :/voi9ure/), je n'ai pas mon message d'erreur qui s'affiche.
- idefix
- WRInaute occasionnel

- Messages: 319
- Inscription: 17 Jan 2007
Re: Contrôler un mot par expression régulière
Ton code me semble avoir différents problèmes :
- la fonction ereg est obsolète, il faut la remplacer par preg_match
- effectivement si tu ne rajoutes pas un * , il faudrait que ta chaîne fasse un seul caractère pour ne pas générer d'erreur.
- Je pense qu'il faut ajouter un caractère comme # en début et en fin de pattern
Un code qui semble bon :
Si st vaut voiture, pas d'erreur.
Si st vaut voi9ture, affichage de "erreur"
- la fonction ereg est obsolète, il faut la remplacer par preg_match
- effectivement si tu ne rajoutes pas un * , il faudrait que ta chaîne fasse un seul caractère pour ne pas générer d'erreur.
- Je pense qu'il faut ajouter un caractère comme # en début et en fin de pattern
Un code qui semble bon :
- Code: Tout sélectionner
if(!preg_match("#^[a-z-]*$#", $st))
{
echo 'erreur';
}
Si st vaut voiture, pas d'erreur.
Si st vaut voi9ture, affichage de "erreur"
-

tryan - WRInaute passionné

- Messages: 2355
- Inscription: 20 Fév 2005
Re: Contrôler un mot par expression régulière
Merci idefix 
Pour un contrôle limiter au lettres majuscules et minuscules + numérique + tirets + simple quote (apostrophe)
ça vous semble bon ?
ps : C'est pour un champ de recherches.
Pour un contrôle limiter au lettres majuscules et minuscules + numérique + tirets + simple quote (apostrophe)
- Code: Tout sélectionner
if(!preg_match("#^[A-Za-z0-9-']*$#", $st))
{
echo 'erreur';
}
ça vous semble bon ?
ps : C'est pour un champ de recherches.
- jcaron
- WRInaute accro

- Messages: 2685
- Inscription: 13 Fév 2004
Re: Contrôler un mot par expression régulière
C'est une bonne idée de toujours mettre - au début, juste après le [. Même si dans ton cas il n'y a pas d'ambiguïté, dans de nombreux cas il peut y en avoir une (genre [a-z/-_] qui ne fait pas du tout ce que certains pourraient imaginer).
Jacques.
Jacques.
- jcaron
- WRInaute accro

- Messages: 2685
- Inscription: 13 Fév 2004
Re: Contrôler un mot par expression régulière
Il y a deux parties dans une regex: l'expression elle-même, et les "flags" (i pour ignorer la casse par exemple). La structure est donc <delimiteur>expression<delimiteur>flags.
Tu peux choisir le délimiteur comme tu veux, mais si tu l'utilises dans l'expression, il faut l'"échapper" en mettant un \ avant. Le délimiteur traditionnel, qui vient de perl, puisque les regex des fonctions php pcre_* sont des "PCRE" (perl-compatible regular expressions) est le "/", mais comme il est relativement souvent utilisé, beaucoup de gens utilisent # à la place.
Jacques.
Tu peux choisir le délimiteur comme tu veux, mais si tu l'utilises dans l'expression, il faut l'"échapper" en mettant un \ avant. Le délimiteur traditionnel, qui vient de perl, puisque les regex des fonctions php pcre_* sont des "PCRE" (perl-compatible regular expressions) est le "/", mais comme il est relativement souvent utilisé, beaucoup de gens utilisent # à la place.
Jacques.
- idefix
- WRInaute occasionnel

- Messages: 319
- Inscription: 17 Jan 2007
Re: Contrôler un mot par expression régulière
Jcaron a tout dit. Il me semble même que mettre le tiret à la fin est obligatoire si tu veux l'inclure dans les possibilités.
Par contre, si c'est pour un champs de recherche je crois que tu n'as pas pensé à tout. Il faut inclure les accents (qui ne seront pas inclus dans a-z, les espaces...etc.
Il y a de très bon cours sur ce sujet (les regex) sur le site du zéro.
Par contre, si c'est pour un champs de recherche je crois que tu n'as pas pensé à tout. Il faut inclure les accents (qui ne seront pas inclus dans a-z, les espaces...etc.
Il y a de très bon cours sur ce sujet (les regex) sur le site du zéro.
- jcaron
- WRInaute accro

- Messages: 2685
- Inscription: 13 Fév 2004
Re: Contrôler un mot par expression régulière
Au début, le tiret, pas à la fin...
Si tu veux accepter les caractères accentués, alors la bonne solution c'est plutôt \w que d'essayer de les lister de façon exhaustive. Note que ça acceptera aussi le chinois, le japonais, l'arabe, le russe, le thaï, etc. si tu es en UTF-8.
Jacques.
Si tu veux accepter les caractères accentués, alors la bonne solution c'est plutôt \w que d'essayer de les lister de façon exhaustive. Note que ça acceptera aussi le chinois, le japonais, l'arabe, le russe, le thaï, etc. si tu es en UTF-8.
Jacques.
13 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- re expression régulière...
- Expression régulière
- expression réguliere!please help!!!
- Expression régulière simple
- soucis expression reguliere
- expression régulière en javascript
- problème expression régulière
- RedirectMatch et expression régulière
- Expression Régulière Malformée ?
- Expression régulière et redirect
Consultez la description détaillée des produits ou services de Google suivants : Google Bombing
- Calculer l'indice de densité
Cet outil vous permet de calculer l'indice de densité d'un mot-clé d'une page web. Il est calculé à la fois pour la balise TITLE, la balise META description et l'ensemble du texte de la page. - Suggestions de mots-clés
Cet outil vous fournit une liste de mots sémantiquement proches du mot que vous fournissez en entrée. Il peut servir à vous donner des idées de mots à utiliser sur vos pages, voire de contenus à ajouter. - Suggestions Google Suggest
Cet outil vous permet d'obtenir une liste de 10 mots ou expressions suggérés par Google sur la base d'un mot que vous fournissez.
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


