Php reg表达式问题&;编码点火器中的路由

Php reg表达式问题&;编码点火器中的路由,php,regex,codeigniter,routing,codeigniter-2,Php,Regex,Codeigniter,Routing,Codeigniter 2,我在使用Codeigniter中的路由和我的表达式时遇到问题 我有一个如下URL(用于提供页面): 路线如下: $route['([a-z0-9_-]+)/offers/view/([a-z0-9]+)/([0-9]+)'] = "offers/view/$1/$2/$3"; 我有上面的路线设置,所以如果应该去提供控制器,查看功能,并通过3个参数(公司,新闻文章,219) 但是,如果第4个uri段包含和“-”,它就会断开,并给我一个404页,那么一切都正常 乙二醇 这很有效 www.site.

我在使用Codeigniter中的路由和我的表达式时遇到问题

我有一个如下URL(用于提供页面):

路线如下:

$route['([a-z0-9_-]+)/offers/view/([a-z0-9]+)/([0-9]+)'] = "offers/view/$1/$2/$3";
我有上面的路线设置,所以如果应该去提供控制器,查看功能,并通过3个参数(公司,新闻文章,219)

但是,如果第4个uri段包含和“-”,它就会断开,并给我一个404页,那么一切都正常 乙二醇

这很有效

www.site.com/company/offers/view/newsarticle/219
但事实并非如此

www.site.com/company/offers/view/news-article/219

谁能解释一下我在表达上做错了什么?谢谢

您的表达式不允许使用连字符

([a-z0-9_-]+)/offers/view/([a-z0-9]+)/([0-9]+)
应该是

([a-z0-9_-]+)/offers/view/([a-z0-9\-]+)/([0-9]+)

注意
[a-z0-9\-]
中的
\-
\
字符转义连字符,告诉表达式引擎它不是范围运算符。

为ben干杯!我知道这样一个错误,谢谢你指出我的错误:)没问题,很高兴我能帮上忙。
([a-z0-9_-]+)/offers/view/([a-z0-9\-]+)/([0-9]+)