【发布时间】:2012-10-19 06:09:50
【问题描述】:
我正在开发一个简单的前端控制器,主要用于学习目的。
我喜欢 Symfony 进行路由的方式,在你的地图中有这样的模式:/news/{category}/{id} 并将类别和 id 变量传递给控制器。但我的问题是 - 因为我无法使用 RegEx - 我不知道如何将模式与 URI 匹配。
应该怎么搭配
/news/{category}/{id}
到
/news/tech/5784
我是否应该允许这样的模式:/news/* - 其中* 匹配所有内容?
或者变量与一些垃圾混合在一起,比如/news/{category}_ex/14{id}?
获取变量和值并不是什么大问题,但编写一个正则表达式进行匹配是。
提前感谢您的帮助
【问题讨论】:
-
您是想在 Symphony 中设置路由,还是想弄清楚如何使正则表达式与您正在使用的 URL 匹配。我不相信 RegEx 真的是你需要的。
-
我没有使用 Symfony。我想要实现的目标:我从用户那里得到了一个 URI,比如site.com/news/tech/5784,并且有一个带有地图的配置文件,地图包含模式及其重定向([0] 数组('pattern'=>'/news/ {category}/{id}', 'controller'=>'NewsController:Index' [1] ...)。我必须知道,如果请求的 URI 被映射,如果是,保存 uri 变量并传递给控制器。
-
在这种情况下 pozs 和 anabhava 都有合适的答案 imo。唯一的问题是,您希望在 category 和 id 字段中允许什么?类别总是一个字符串吗? id 总是整数吗?这些在编写正则表达式时很重要。
-
我不明白那个正则表达式是从哪里来的。我只知道我有一个 uri 和模式。如何将模式转换为这个正则表达式形式以匹配 uri?
-
你是说我应该在我的配置文件中使用这个表单而不是 symfony 的方式吗? {变量}
标签: php uri match front-controller