2014-09-12 274 views
-1

我正在使用Spiffy-Route庫來路由我的URL。一切都很好,能夠自由路由所需的網址,但我不能添加通配符,因爲它不包含在api中。URL路由 - 正斜槓與尾部斜槓匹配且沒有

我的路線是這樣的:

/{id:\d+}-{string} 

意味着我可以路線,它是這樣的:

.com/5-helloworld 

但是,當我的路線是這樣的:

.com/5-helloworld/ 

它由於斜線,不會找到匹配。我曾嘗試過/{id}-{string}/?,但參數{string}將在其值內包含所有斜線。

我已經經歷了一些正則表達式計算器上的問題,找出如何使斜線和沒有圖案的支持 - 常見的答案是([^/]+),但是這塊正則表達式並沒有真正影響到在所有我的情況。

我該怎麼用Spiffy路由器做這件事?

如果我這樣做/{id}-{string}([^/]+)/?和路線,它是這樣的:根據本回聲/5-hey/

輸出將是5he代替5hey

echo parent::getRouteMatch()->get('id') . parent::getRouteMatch()->get('string'); 

我將不得不修改的API讓這個工作?

+0

聯合的構想呢? '[^ /] + /?'我不知道斯皮菲。 – AbraCadaver 2014-09-12 20:15:55

+0

@AbraCadaver已經做到了,我不會得到完整的{string}參數,請在一秒鐘內檢查我的編輯。 – Artemkller545 2014-09-12 20:17:13

+0

羽絨投票人,你能解釋你的投票原因嗎? – Artemkller545 2014-09-12 20:36:41

回答

2

[^/]意味着什麼,但正斜槓。這個怎麼樣:

/{id:\d+}-{string:[^/]+}\/? 

我應該注意我也不知道spiffy。正則表達式,應該工作。

如果你想允許斜線後的字符串,請使用.*允許和丟棄,或重複{string:[^/]+捕捉(替代另一名在這種情況下,雖然)

+0

它包含{string}參數中的斜線。所以如果你的URL是'/ 5-hello /',你的輸出將是'5hello /'**根據我的回聲代碼** – Artemkller545 2014-09-12 20:29:00

+0

嗯,好的。只是在這裏盲目拍攝,但嘗試'/ {id:\ d +} - {string:[^ /]} \ /?' – Schlaus 2014-09-12 20:30:31

+0

完全沒有匹配。 – Artemkller545 2014-09-12 20:32:11