2013-08-07 45 views
1

需要一些正則表達式newb的正則表達式幫助。正則表達式 - 如果我們的網站URL包含此,然後

如果我們的網址中包含

SearchBox. 

(與末尾的點搜索盒)或

SearchBox-Empty 

然後,我們需要做一些事情。因此,例如匹配的網址是:

http://www.thesite.com/SearchBox.html

http://www.thesite.com/SearchBox-Empty.html

和非匹配的網址是:

http://www.thesite.com/SearchBox-Function.html

所以,我只希望它匹配時沒有被調用的函數。

這是我到目前爲止有:

if((preg_match("@SearchBox\[email protected]",$_SERVER['REQUEST_URI']) || preg_match("@SearchBox\[email protected]",$_SERVER['REQUEST_URI'])) && !empty($_REQUEST['ID']) && is_numeric($_REQUEST['ID'])) { 

感謝您的幫助!

+1

矛盾:SearchBox-Function包含SearchBox。因此,您是指SearchBox.html或SearchBox-Empty.html(即包含tld)嗎? – sp00m

+0

好吧,特別是SearchBox。最後加點。 – CRAIG

+1

作爲一個附註,你不需要同時檢查'empty'和'is_numeric'。任何失敗'empty'的值將會失敗'is_numeric',所以'is_numeric'會自動執行。 – ironcito

回答

0

如果我沒有記錯,你需要逃避你反斜線:

"/SearchBox(?:\\.|-Empty)/" 
0

試試這個代碼:

if(preg_match("/(SearchBox|SearchBox\-Empty)\.html$/",$_SERVER['REQUEST_URI']) && is_numeric($_REQUEST['ID'])) { 
//... 
} 
+0

op表示搜索框可以存活只有一個點(不是整個.html) –

+0

可能也意味着任何垃圾都可以跟隨這個點,並且會通過。與empty.html類似 –

+0

不,它似乎不起作用。只是爲了確保其餘的代碼是正確的,我把它改爲: 「/^\/SearchBox /」 和我的「then」代碼工作正常,但使用上面的正則表達式並沒有觸發「then 「代碼與此URL: http://www.thesite.com/SearchBox-Empty.html?&ID = 58279 謝謝! – CRAIG

0

試試這個正則表達式 - 我不是太熟悉PHP正則表達式的味道,但:

preg_match("/SearchBox(\\.|\\-Empty\\.html)[.]*/",$_SERVER['REQUEST_URI']) 
+0

有趣的逃生問題:http://stackoverflow.com/questions/2145804/extra-backslash-needed-in-php-regexp-pattern[/url] –

+0

是的,實際上雙反斜槓似乎不工作。我不得不使用單個反斜槓來實際運行它。結束使用這個:/MediaBox(?:\.|-Empty\.//使用regex101.com來測試它。 – CRAIG

相關問題