Interdire plusieurs mot

supertino7 Messages postés 3 Date d'inscription vendredi 26 février 2010 Statut Membre Dernière intervention 11 mars 2010 - 26 févr. 2010 à 16:24
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 11 mars 2010 à 18:54
Bonjour,

ma demande est assez particulière.
Je cherche à interdire le caractère "/" ainsi que le mot "page" dans ma regex, et autoriser seulement [a-zA-Z0-9] ainsi que les "-".

Seulement, je développe avec Zend Framework et le composant Zend_Router.

actus_par_cat_et_theme.route = "actualites/:categorie/:theme"
actus_par_cat_et_theme.reqs.categorie = "[-\w]*"
actus_par_cat_et_theme.reqs.theme = "[-\w]*"


Comme vous pouvez le voir, ça n'est pas dans le cadre d'une fonction PHP, je ne peux donc pas utiliser de if inversé, qui aurait été assez simple :
if ( !preg_match( "#(page|/)#" ) 


Je suis obligé de déclarer les interdits, et non pas de les détecter.
Le [-\w] pour l'instant m'autorise les [a-zA-Z0-9] ainsi que les "-".

Tous mes googlisations ont été infructueux :(, merci par avance pour votre aide !

5 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
11 mars 2010 à 16:13
suffit de faire des assertion négative...

y'a un exemple sur le teste des mots de passe.


blabla/KO
blabla-ok
blab12page12ko
blab12piege12ok


^(?!.*\/)(?!.*page)\S+$

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
supertino7 Messages postés 3 Date d'inscription vendredi 26 février 2010 Statut Membre Dernière intervention 11 mars 2010
11 mars 2010 à 16:27
Assertions négatives ?
Ok c'est retenu, je connaissais pas :)
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
11 mars 2010 à 16:55
(?= ) assertion positive: poursuivre si la reg match
(?! ) assertion négative: poursuivre si la reg ne match pas

ca permet de combiner les regexp

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
supertino7 Messages postés 3 Date d'inscription vendredi 26 février 2010 Statut Membre Dernière intervention 11 mars 2010
11 mars 2010 à 17:02
Ok merci :)

Par contre, quand tu dis "poursuivre", j'ai du mal un peu à capter, tu parles de poursuivre l'analyse ?
Dans mon cas, si la regex match le mot "page", que se passe t-il en fait ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
11 mars 2010 à 18:54
oui, poursuivre l'analyse...
en fait, voyant page, il sais qu'il doit quitter pour cette ligne

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0