正则表达式爆炸url部分

时间:2015-02-25 12:51:08

标签: php regex parsing url

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

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

是否有正则表达式可以捕获无限的网址部分?基本上我需要这样做的正则表达式:explode('/', $url)

警告:只能使用preg_match!

没有爆炸,preg_match_all,g,

1 个答案:

答案 0 :(得分:1)

在评论中,您显示了您正在使用的路由器功能: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']);