Vous utilisez un navigateur non à jour ou ancien. Il ne peut pas afficher ce site ou d'autres sites correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
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.
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
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).
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.
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.
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.