【发布时间】:2015-02-25 12:51:08
【问题描述】:
// repeat /?([^/)? 10 times
preg_match("`/?([^/]+)/?([^/]+)?/?([^/]+)?/?([^/]+)?/?([^/]+)?/?/?([^/]+)/?([^/]+)?/?([^/]+)?/?([^/]+)?/?([^/]+)?/?`");
这是我用来解析请求 uri 而不进行查询的正则表达式。它最多可以捕获 10 个 url 部分。这不是最佳的也不是好的。目前的解决方法是放足够多的/?([^/]+),并希望没有人会超过这个限制。
是否有可以捕获无限 url 部分的正则表达式?基本上我需要这样做的正则表达式:explode('/', $url)。
警告:只能使用 preg_match!
没有爆炸,preg_match_all,g,
【问题讨论】:
-
(/?([^/]+))*呢? -
parse_str呢? -
只是好奇,为什么不能用explode?span>
-
@Tom Hart:整个 url 路由器使用 preg_match 就是这样。我可以使用“
.”进行最后一次检查,而不是在关闭时爆炸 request_uri。我希望有纯正/干净的正则表达式解决方案。 -
@marsze 似乎不起作用regex101.com/r/lZ0jV4/2