假设我有'/srv/www/site.com/htdocs/system/application/views/'
并希望针对匹配路径中每个目录名称的正则表达式对其进行测试?
像这样的模式:'(/[^/])'
这会产生一个'srv','www','site.com'...
等数组。
PS2:我知道有explode()
,但让我们看看我们是否可以使用正则表达式来实现这一点(它对其他没有爆炸的语言和框架很有用)。
答案 0 :(得分:4)
$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
)
答案 1 :(得分:1)
有preg_split
用于在正则表达式上拆分文件,类似于explode,然后有preg_match_al
l可以执行您想要的操作。
答案 2 :(得分:1)
我认为你不能,但你可以使用preg_match_all()从正则表达式中获取多个匹配项。还有preg_split()可能更合适。