Php 正则表达式复杂匹配

Php Regular Expression Complex Matching

我正在开发一个 php mvc 路由系统,我需要我的路由器能够获取 url 的各个部分并相应地映射它,就像在这个例子中一样:

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+)$/

我正在使用命名捕获来获取零件。我需要正则表达式方面的帮助才能获得上述结果。

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

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

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