我正在使用Spiffy-Route库来路由我的网址。一切都很棒,能够自由地路由所需的网址,但我真的无法添加通配符,因为它不包含在api中。
我的路线如下:
/{id:\d+}-{string}
意味着我可以像这样路由到它:
.com/5-helloworld
但是当我这样路由时:
.com/5-helloworld/
由于斜线,它找不到匹配项。我已经尝试过/{id}-{string}/?
,但参数{string}将包含它内部的所有斜杠。
我一直在浏览stackoverflow上的一些 Regex 问题,以了解如何使用斜杠和不使用斜线模式支持 - 常见的答案是([^/]+)
,但这段正则表达式在我的情况下根本没有影响。
如何使用Spiffy路由器执行此操作?
如果我执行/{id}-{string}([^/]+)/?
之类的操作,请按照以下方式进行操作:/5-hey/
根据此回音,输出将为5he
而不是5hey
:
echo parent::getRouteMatch()->get('id') . parent::getRouteMatch()->get('string');
我是否需要修改API才能使其正常工作?
答案 0 :(得分:2)
[^/]
意味着除了正斜杠之外的任何东西。怎么样:
/{id:\d+}-{string:[^/]+}\/?
我应该注意我也不认识Spiffy。正确的正则表达式应该可以工作。
如果要在斜杠后允许字符串,请使用.*
允许和丢弃,或重复{string:[^/]+
以捕获(在这种情况下将字符串替换为其他名称) )