簡體   English   中英

URL路由-正則表達式與斜杠匹配,不帶斜杠

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM