Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fala galera, eu preciso de uma ajuda para fazer um Regex que funcione corretamente.
Seguinte, eu estou fazendo um sistema que ele tem a página de categoria e a página do jogo, a categoria pode ter como nome jogos(-nome-da-categoria) ou fliperama, e o jogo é (categoria)/nome-do-jogo
Categoria
$route = new Zend_Controller_Router_Route_Regex( "([jogos|fliperama][-a-zA-Z0-9]+)", array( "module" => "default", "controller" => "category", "action" => "index" ), array( 1 => "categoria" ) );
Jogo
$route = new Zend_Controller_Router_Route_Regex( "([jogos|fliperama][-a-zA-Z0-9]*)/([-a-zA-Z0-9]+)", array( "module" => "default", "controller" => "game", "action" => "index" ), array( 1 => "categoria", 2 => "jogo" ) );
O problema é que se eu colocar digamos, busca/palavra-chave ele cai na página de jogos, e se eu colocar apenas digamos busca ele cai em categoria.
Como faço para ele não tentar "atrapalhar" as outras urls ?
Obrigado.
Cara, obrigado pela sua resposta, mas eu consegui fazer funcionar utilizando assim:
([jogos|fliperama]\-[-a-zA-Z0-9])
Eu cheguei nisso, claro, chutando, as funcionou, e esse é o mais importante :)
Obrigado.
Parece que você está confundindo lista com grupo:
[jogos|fliperama]
Essa é uma lista e irá casar todos os caracteres dentro dela (letra j, letra o, etc.), tornando o comportamento do router imprevisível.
Mas o que você pretendia era casar ou a palavra "jogos" ou a palavra "fliperama", nesse caso você deve usar um grupo:
(jogos|fliperama)