可以的preg_match()(或其它的PHP正则表达式函数)相匹配的可变数量括号子模式?

StackOverflow https://stackoverflow.com/questions/1294721

  •  18-09-2019
  •  | 
  •  

假设我有'/srv/www/site.com/htdocs/system/application/views/',想测试它针对每个目录名称的路径相匹配的正则表达式?

东西这样的模式:'(/[^/])'结果 这产生了具有'srv','www','site.com'...等的阵列。

PS:我写的正则表达式语法是只是为了说明,它不是测试,肯定错了,但只给一个想法

PS2:我知道有explode()但让我们看看,如果我们能做到这一点用正则表达式(这是其他语言和框架不具备爆炸有用)

有帮助吗?

解决方案

preg_match_all

$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_all 其你想要做什么。

我不认为你可以,但你也可以使用 preg_match_all()获得来自多个匹配正则表达式。还有使preg_split()其可以是更合适的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top