2010-11-30 114 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