2017-05-12 112 views
1

我正在为PHP的路由系统(语言对问题不敬)。检查url是否匹配模板

我的路线是这样的数组:(实际计划每条路线都有它是否匹配时运行的回调)

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

什么是我可以采取URL的最佳方式,说/posts/2b45v21并从数组中获得最接近的匹配路线?

给定输入/posts/2b45v21,它应该匹配/posts/{id}而不是//posts/{year}/{month}

我尝试了一些方法用正则表达式,如转换{...}.*?,然后逃逸所有反斜杠,但我不是一个会不匹配/

我认为最好的方法是循环遍历所有路线并找到最接近匹配的路线,但问题是如果没有匹配,它可以默认为/(例如,输入/page/1真的应该返回没有匹配,但最接近'/')

+0

转义反斜杠... – t0mm13b

回答