2017-05-12 156 views
1

我正在爲PHP的路由系統(語言對問題不敬)。檢查url是否匹配模板

我的路線是這樣的數組:(實際計劃每條路線都有它是否匹配時運行的回調)

[ 
    '/', 
    '/posts/{id}', 
    '/posts/{year}/{month}', 
    '/about' 
] 

什麼是我可以採取URL的最佳方式,說/posts/2b45v21並從數組中獲得最接近的匹配路線?

給定輸入/posts/2b45v21,它應該匹配/posts/{id}而不是//posts/{year}/{month}

我嘗試了一些方法用正則表達式,如轉換{...}.*?,然後逃逸所有反斜槓,但我不是一個會不匹配/

我認爲最好的方法是循環遍歷所有路線並找到最接近匹配的路線,但問題是如果沒有匹配,它可以默認爲/(例如,輸入/page/1真的應該返回沒有匹配,但最接近'/')

+0

轉義反斜槓... – t0mm13b

回答