可以的preg_match()(或其它的PHP正则表达式函数)相匹配的可变数量括号子模式?
-
18-09-2019 - |
题
假设我有'/srv/www/site.com/htdocs/system/application/views/'
,想测试它针对每个目录名称的路径相匹配的正则表达式?
东西这样的模式:'(/[^/])'
结果
这产生了具有'srv','www','site.com'...
等的阵列。
PS:我写的正则表达式语法是只是为了说明,它不是测试,肯定错了,但只给一个想法
PS2:我知道有explode()
但让我们看看,如果我们能做到这一点用正则表达式(这是其他语言和框架不具备爆炸有用)
解决方案
$str = '/srv/www/site.com/htdocs/system/application/views/';
preg_match_all('/\/([^\/]+)/', $str, $matches);
// $matches[0] contains matching strings
// $matches[1] contains first subgroup matches
print_r($matches[1]);
输出:
Array
(
[0] => srv
[1] => www
[2] => site.com
[3] => htdocs
[4] => system
[5] => application
[6] => views
)
其他提示
有是 preg_split
获得正则表达式分割文件类似于爆炸,然后有 preg_match_al
l 其你想要做什么。
我不认为你可以,但你也可以使用 preg_match_all()获得来自多个匹配正则表达式。还有使preg_split()其可以是更合适的。
不隶属于 StackOverflow