正则表达式分解 url 个部分

regex explode url parts

// repeat /?([^/)? 10 times
preg_match("`/?([^/]+)/?([^/]+)?/?([^/]+)?/?([^/]+)?/?([^/]+)?/?/?([^/]+)/?([^/]+)?/?([^/]+)?/?([^/]+)?/?([^/]+)?/?`");

这是我用来在没有查询的情况下解析请求 uri 的正则表达式。它最多可以捕获 10 url 个部分。这既不是最佳的也不是好的。当前的解决方法是放置足够多的 /?([^/]+) 并希望没有人会超过该限制。

是否有可以捕获无限 url 部分的正则表达式?基本上我需要执行此操作的正则表达式:explode('/', $url)

警告:只能使用 preg_match!

没有爆炸,preg_match_all,g,

在评论中您显示了您正在使用的路由器组件:Seriously Simple Router

解决方案是在控制器中访问此类信息,而不是在路由器中。以下示例显示了如何执行此操作:

// Wrap the whole url into the first capturing group to
// forward it to the controller
Router::route('(a/b/c/([\d]+))', function($url, $id) {
  var_dump(explode('/', $url));
});

Router::execute($_SERVER['REQUEST_URI']);