Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonsoir,
Depuis deux jours je lutte avec la négation des chemins dans le Zend_Controller_Router_Route_Regex. Le cas problématique est:
$tagRoute = new Zend_Controller_Router_Route_Regex('([^tags][a-z0-9]+)', array('controller' => 'tag', 'action' => 'afficher'), array(1 => 'nom' ), '%s');
$router->addRoute('tag2', $tagRoute);
Voilà. Je n'ai pas trouvé comment nier dans les expressions régulières de PHP une phrase complète (dans mon cas, ce sera "tags"). Dans mon exemple, le router marche pour les liens sans t, a, g, s. Donc, il nie seulement les lettres. J'ai essayé plusieurs solutions (avec apostrophes, guillemets, points d'exclamation) mais rien n'allait.
Pourriez-vous m'aider à résoudre ce problème ? Merci d'avance pour vos conseils.
Hors ligne
Je pense que le plus simple c'est d'enregistrer une route tags avant ta route tagRoute qui va intercepter les urls commençant par tags.
Hors ligne
Sinon tu peux essayer
(?:(?!tags).)+
(Mais ne me demande pas de te l'expliquer)
Dernière modification par mdelanno (11-04-2009 21:24:45)
Hors ligne
[^(tag)]
tout sauf tag
tu peux trouver des infos sur les regexp ici
http://www.expreg.com/
http://www.google.fr/codesearch?q=regexp (code serarche de google donne accès à es extrait de code sur tout et n'importe quoi
et enfin http://www.regular-expressions.info/
A+JYT
Hors ligne
mdelanno a écrit:
Sinon tu peux essayer
Code:
(?:(?!tags).)+(Mais ne me demande pas de te l'expliquer)
Merci. Ta réponse fonctionne bien. Pour les futurs, si l'on veut nier deux phrases:
(?:(?!tags)(?!communaute))
@sekaijin, merci pour les liens et la réponse.
Dernière modification par bart (18-04-2009 11:15:31)
Hors ligne
Pages: 1