为什么这个正则表达式不会被codeigniter的路由器识别

时间:2012-09-25 00:28:22

标签: php regex codeigniter url-routing

我有这条路线:

$route["((parameter|type|something)-([0-9]+)\/)+"] = 'somecontroller';

所以当我用这个测试网址时:

www.somewebsite.com/parameter-1/

codeigniter返回页面未找到错误。但我在这里测试了正则表达式:

http://rubular.com/

它似乎工作得很好。

编辑:我也试过把前导/尾随/'s:

$route["/((parameter|type|something)-([0-9]+)\/)+/"] = 'somecontroller';

编辑:好的,感谢Omega(用户),这是因为斜杠字符(/)在codeigniter的路由解析引擎中具有特殊的优先级或效果。因此,如果它是正则表达式的一部分,则表示它可以显示多少次,不确定原因,因此您可以通过这些运算符跟踪它{}或?或*或+,或任何其他处理前面的表达式出现次数的运算符。那么以上路线,用?运营商的工作:

$route["/((parameter|type|something)-([0-9]+)\/)+/?"] = 'somecontroller';

这显然是一个特定于代码的问题。

1 个答案:

答案 0 :(得分:1)

尝试将?添加到模式>> ((parameter|type|something)-([0-9]+)\/?)+