【问题标题】:Issue with reg expressions & routes in CodeigniterCodeigniter 中的 reg 表达式和路由问题
【发布时间】:2011-11-17 16:16:11
【问题描述】:

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

我有一个如下 URL(用于优惠页面):

www.site.com/company/offers/view/newsarticle/219

还有如下路线:

$route['([a-z0-9_-]+)/offers/view/([a-z0-9]+)/([0-9]+)'] = "offers/view/$1/$2/$3";

我有上面的路由设置,所以如果应该去 offer 控制器和视图函数并传递 3 个参数(公司、新闻文章、219)

它工作得很好,但是如果第 4 个 uri 段包含和“-”它会中断并给我一个 404 页面 例如

这行得通

www.site.com/company/offers/view/newsarticle/219

但这不是

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

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

【问题讨论】:

    标签: php regex codeigniter routing codeigniter-2


    【解决方案1】:

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

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

    应该是

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

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

    【讨论】:

    • 干杯本!我知道这样一个菜鸟错误,感谢您指出我的错误:)
    • 没问题,很高兴能帮上忙。
    猜你喜欢
    • 1970-01-01
    • 2010-12-30
    • 2012-06-28
    • 2014-04-14
    • 2012-09-23
    • 1970-01-01
    • 2015-08-07
    • 1970-01-01
    相关资源
    最近更新 更多