在Codeigniter中创建一个匹配以某些东西开头的所有内容的路由

时间:2018-05-03 14:49:46

标签: php regex codeigniter routing

我正在尝试创建一个匹配以“cms”开头的任何内容的路由。 我试过这个:

$route['(^cms)'] = 'welcome';

它似乎只是字面上匹配“cms”。我尝试过其他变化 - 没有成功。 Codeigniter的文档明确指出:

  

如果您愿意,可以使用正则表达式来定义路由规则。允许使用任何有效的正则表达式,以及后引用。

有什么建议吗?我还要注意,我需要能够捕获具有多个斜杠的路线,例如“https://mysite/cms/login”。

2 个答案:

答案 0 :(得分:1)

使用正则表达式:^cms.*$

Demo

说明:

^ asserts position at start of a line
cms matches the characters cms literally (case sensitive)
.* matches any character (except for line terminators)
* Quantifier — Matches between zero and unlimited times, as many times as possible, giving back as needed (greedy)
$ asserts position at the end of a line

答案 1 :(得分:0)

根据doc

使用CI路线
$route['cms/(:any)'] = 'welcome';

get in controller

https://mysite/cms/login/hello
$this->uri->segment(2); // return 'login'
$this->uri->segment(3); // return 'hello'