1

假设我有'/srv/www/site.com/htdocs/system/application/views/'并且想要针对匹配路径中每个目录名称的正则表达式对其进行测试?

类似于这种模式的东西:这会产生一个带有etc 的数组。'(/[^/])'
'srv','www','site.com'...

PS:我写的正则表达式语法只是为了说明,它没有经过测试,肯定是错误的,只是为了给出一个想法。

PS2:我知道有,explode()但让我们看看我们是否可以使用正则表达式来做到这一点(它对其他没有爆炸的语言和框架很有用)。

4

3 回答 3

4

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
)
于 2009-08-18T15:51:57.333 回答
1

preg_split用于在类似于explode 的正则表达式上拆分文件,然后有preg_match_all可以满足您的需求。

于 2009-08-18T15:51:14.310 回答
1

我认为你不能,但你可以改为使用preg_match_all()从正则表达式中获取多个匹配项。还有preg_split()可能更合适。

于 2009-08-18T15:52:01.483 回答