2011-05-05 73 views
1

我有一个搜索框。 当用户输入单个字符如'A'或'B'或'C'时。 而是对我的数据库运行查询的,我重定向到一个适当的 页到Z目录使用preg_match重定向到特定页面

所以,例如,如果用户搜索的为“H”他们得到抽空www.domain.com/a_to_z/h/

要做到这一点我有

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/"); 

这工作,但你可以看到它不是很有效。

我知道有可能用一行代码使用prge_match来完成,但我不知道如何实际做到这一点。

您的帮助将非常感激

感谢

回答

3

正则表达式[a-z]将只匹配单个字符由小写a到小写ž。要包含大写字母和数字,请改为使用[a-zA-Z0-9]。这也可能是你在找什么:

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

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

+0

它的工作原理验证。但我想要匹配小写字母和大写字母。到目前为止,它只适用于小写字母。我也想添加0-9数字。再次感谢。 – jamjam 2011-05-05 17:54:32

+0

@jamjam更好:正则表达式\ w将匹配a-z,A-Z,0-9和下划线(_)。如果你不想要下划线,你可以测试一个匹配,然后测试'!=='_''。 – sdleihssirhc 2011-05-05 17:56:47

+0

我不确定你的意思。你是说我应该在mysql查询中包含正则表达式来“过滤”出结果吗? – jamjam 2011-05-05 17:59:50

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

拿上记住,$ _GET [搜索]不作任何方式

+0

我的代码是@sdleihssirhc代码的重定向部分 – 2011-05-05 17:41:14

+0

或者,对于根本不关心安全的人来说,这可能就是你所使用的全部。 – sdleihssirhc 2011-05-05 17:48:39