Php正则表达式复数匹配

时间:2016-08-07 01:07:25

标签: php regex url-routing

我正在使用php mvc路由系统,我需要我的路由器能够获取网址的各个部分并相应地映射它,如下例所示:

url = controller/method/parameters/another/something/page/7

应该映射到:

controller = controller, method = method, parameters = parameters/another/something, page = 7

目前只能匹配

controller/method/parameter/page/7

这个正则表达式:

{controller}/{method}/{parameters:[a-z0-9-]+}/page/{page:\d+}

转换为这种模式:

/^(?P<controller>[a-z-]+)\/(?P<method>[a-z-]+)\/(?P<parameters>[a-z0-9-]+)\/page\/(?P<page>\d+)$/

我使用命名捕获来获取部件。我需要帮助正则表达式用于获得如上所述的结果。

1 个答案:

答案 0 :(得分:0)

您需要在参数的字符类中允许/

/^(?P<controller>[a-z-]+)\/(?P<method>[a-z-]+)\/(?P<parameters>[a-z0-9\/-]+)\/page\/(?P<page>\d+)$/

演示:https://regex101.com/r/nX7cZ8/1