Php 为什么';这个正则表达式是否被codeigniter';s路由器
我有这条路线:Php 为什么';这个正则表达式是否被codeigniter';s路由器,php,regex,codeigniter,url-routing,Php,Regex,Codeigniter,Url Routing,我有这条路线: $route["((parameter|type|something)-([0-9]+)\/)+"] = 'somecontroller'; 因此,当我使用以下内容测试url时: www.somewebsite.com/parameter-1/ codeigniter返回页面未找到错误。但我在这里测试了正则表达式: 它似乎工作得非常好 编辑:我还尝试过放置前导/尾随/: $route["/((parameter|type|something)-([0-9]+)\/)+/"]
$route["((parameter|type|something)-([0-9]+)\/)+"] = 'somecontroller';
因此,当我使用以下内容测试url时:
www.somewebsite.com/parameter-1/
codeigniter返回页面未找到错误。但我在这里测试了正则表达式:
它似乎工作得非常好
编辑:我还尝试过放置前导/尾随/:
$route["/((parameter|type|something)-([0-9]+)\/)+/"] = 'somecontroller';
编辑:好的,多亏了Omega(用户),这是因为斜杠字符(/)在codeigniter的路由解析引擎中具有特殊的优先级或效果。所以,如果它是正则表达式的一部分,您可以表示它可以出现多少次,不知道为什么,所以您可以通过这些运算符{}或跟随它?或*或+,或处理前面表达式出现次数的任何其他运算符。那么上面的路线,有没有?操作员工作:
$route["/((parameter|type|something)-([0-9]+)\/)+/?"] = 'somecontroller';
这显然是一个特定于codeigniter的问题。尝试将
?
添加到模式>((参数|类型|某物)-([0-9]+)\/?)+
CI是否希望您也提供此功能?嗯,不确定您的意思,您能进一步解释一下吗?$route['/((参数|类型|某物)-([0-9]+)\/)/)/“='somecontroller'='
-注意前面/后面的/
s,并在我的第一条评论中查看链接OK,所以我在表达式的开头和结尾添加了/in,所以现在是:/((参数|类型|某物)-([0-9]+)\/)+/但它仍然不起作用。如果有任何建议,我们将不胜感激…解释OP为什么会更好,我尝试了?,但还是不起作用。老实说,如果codeigniter有一个特定的正则表达式,应该在他们的用户指南中提到,我不知道他们怎么能忽略它…哦,哇,你说的对,是吗?这是一个技巧,所以它基本上是为了逃避斜杠?斜杠在路径的末尾是可选的