2011-05-05 71 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