2010-11-30 119 views
0

我目前正在爲我的項目建立一個CMS,我試圖路由到我的'管理員'控制器。現在我正則表達式是:PHP的正則表達式爲管理員,管理員和管理員/更多/等

'admin(.*)' 

但有了這個一切以「管理員」開始將被匹配。當'admin','admin/foo'和'admin/foo/bar'等出現時,我想匹配路線。不是當'adminn'或類似的東西。

希望你明白我在做什麼。 THX /托比亞斯

回答

3

改變正則表達式是這樣的:

admin(\/.*)? 
+0

這就是我一直在尋找,謝謝阿林:) – sandelius 2010-11-30 09:19:38

0

對於字符串,如admin/foo/bar/salami/pizza,怎麼樣preg_match('~^admin\/~', $string)

+0

只是`管理員`如何? – 2010-11-30 09:19:42

0

有兩種方法可以在所有

  • 搜索最長的無子正則表達式工作第一,這樣你就不會首先匹配管理。所以,用你的例子,首先檢查admin/foo/bar,然後是admin/foo,然後是admin。
  • 將斜槓上的字符串爆炸(),然後按位找出匹配的內容,例如爆炸('/',$ request)然後檢查零件;如果第一個結果是admin,則將其傳遞給管理控制器,從而可以找出其餘路由。
0

另一種方法:

$sample_string="admin/foo/bar"; 

if(in_array("admin", explode("/",$sample_string))){ 
//true 
}else{ 
//false 
} 

或者你甚至可以更換爆炸「/」與「管理」爆炸.....

+0

這將匹配`something/admin/other`,我不認爲他想要。 – 2010-11-30 09:29:03