[英]PHP regex pattern to return N slugs/chunks (separated or split on the “/” char.) as matches from a “friendly” URL?
我正在寻找一个正则表达式模式,该模式将返回N个子段/块(URL的所有部分,在“ /”字符上分隔或拆分)作为“友好” URL的匹配项。
该模式不应包含域或斜杠。 同样,该模式应与未知数量的条和/或斜线一起工作。
例如,一些示例URL和所需的返回子段/块:
最后,我需要传递此正则表达式模式preg_match(或类似格式),并使其通过函数的$ matches参数返回结果。
例如:
<?php preg_match($your_pattern, $friendly_url, $your_pattern_matches); ?>
...可以使用explode()获得相似的结果。
与我的旧示例相比,这种模式在更为复杂的场景中使用。 要求使用/强制我通过preg_match使用正则表达式模式作为解决方案。 基本上,我正在传递preg_match一个选择模式,这就是为什么我需要一个正则表达式模式而不是简单使用explode的原因。
非常感谢您的帮助!
干杯!
首先,检查preg_split的手册
$segments = preg_split('[/]', $uri, 0, PREG_SPLIT_NO_EMPTY);
如果您坚持使用preg_match,请查看以下内容:
$uri = '/foo-bar/baz';
preg_match_all('%[^/]+%', $uri, $matches);
print_r($matches);
听起来像explode()
可以完成工作,而不必理会正则表达式:
$matches = explode('/', $url);
抱歉,但我认为您无法使用preg_match做您想做的事情。
阅读文档后
您可以看到preg_match将在第一个比赛时停止。 您希望在一个友好的url中包含一个匹配项数组,但这只能通过多个matchs来实现,以便将值存储在数组中或通过单个匹配项来存储整个内容。 这两种情况都不适合您,因此我担心您将不得不使用除preg_match之外的其他方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.