2011-05-05 4 views
1

J'ai un champ de recherche. Lorsque l'utilisateur entre un seul caractère comme 'A' ou 'B' ou 'C'. Au lieu d'exécuter une requête sur ma base de données, je les rediriger vers la page appropriée d'un répertoire à zRediriger vers une page particulière avec preg_match

Ainsi, par exemple, si une recherche est pour « H » utilisateur qu'ils se prendre à www.domain.com/a_to_z/h/

Pour cela je

if($_GET[search] == "a") echo header("location:/a_to_z/a/"); 
if($_GET[search] == "b") echo header("location:/a_to_z/b/"); 
if($_GET[search] == "c") echo header("location:/a_to_z/c/"); 

cela fonctionne, mais comme vous pouvez le voir est pas très efficace.

Je sais qu'il est possible d'accomplir ceci avec une seule ligne en utilisant prge_match mais je ne sais pas comment le faire.

Votre aide sera très appréciée

Merci

Répondre

3

Le regex [a-z] ne correspondra un seul caractère de minuscules a à z en minuscules. Pour inclure des majuscules et des chiffres, utilisez [a-zA-Z0-9] à la place. Il est probablement ce que vous cherchez:

if (preg_match('~^[a-z]$~', $_GET['search'])) { 
    // redirect 
} else { 
    // handle errors 
} 

This is a good site for the various regular expression basics.

+0

Il fonctionne. Mais je voudrais faire correspondre les minuscules et les majuscules. Jusqu'à présent, cela ne fonctionne que pour lowcase. Je voudrais également ajouter 0-9 chiffres. Merci encore. – jamjam

+0

@jamjam Encore mieux: l'expression régulière '\ w' correspondra à a-z, A-Z, 0-9, et le trait de soulignement (_). Vous pouvez tester une correspondance et ensuite tester '! == '_'' si vous ne voulez pas le trait de soulignement. – sdleihssirhc

+0

Je ne suis pas sûr de ce que vous voulez dire. Êtes-vous en train de dire que je devrais inclure regex dans la requête mysql pour "filtrer" les résultats? – jamjam

1
header("location:/a_to_z/".$_GET[search]."/"); 

prendre à l'esprit que $ _GET [recherche] ne validé en aucune façon ici

+0

mon code est la partie // de redirection du code @sdleihssirhc –

+0

Ou, pour les gens qui ne se soucient pas de la sécurité du tout, cela pourrait être tout ce que vous utilisez. – sdleihssirhc

Questions connexes