[英]URL routing - regex match with trailing slash and without
我正在使用Spiffy-Route库来路由我的URL。 一切都很好,能够自由地路由所需的url,但是我真的不能添加通配符,因为它不包含在api中。
我的路线如下所示:
/{id:\d+}-{string}
意味着我可以这样路由:
.com/5-helloworld
但是当我这样路由时:
.com/5-helloworld/
由于斜杠,它将找不到匹配项。 我尝试做/{id}-{string}/?
但参数{string}将在其值内包含所有斜杠。
我一直在通过stackoverflow进行一些正则表达式问题,以找出如何使用斜杠和不使用斜杠来支持模式-常见的答案是([^/]+)
,但是这条正则表达式根本不会真正影响我的情况。
如何使用Spiffy路由器执行此操作?
如果我做类似/{id}-{string}([^/]+)/?
事情/{id}-{string}([^/]+)/?
并按如下方式路由到它: /5-hey/
根据此回5hey
,输出将为5he
而不是5hey
:
echo parent::getRouteMatch()->get('id') . parent::getRouteMatch()->get('string');
我是否需要修改API才能使其正常工作?
[^/]
表示除正斜杠之外的任何内容。 这个怎么样:
/{id:\d+}-{string:[^/]+}\/?
我应该注意我也不了解Spiffy。 正则表达式应该可以工作。
如果要在斜杠后允许使用字符串,请使用.*
允许并丢弃,或重复使用{string:[^/]+
进行捕获(尽管在这种情况下,将字符串替换为另一个名称)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.