遍历目录但从不同的文件开始?

时间:2014-05-13 13:56:07

标签: php

有没有办法从不同的文件开始,例如。一个以“M”开头,而不是使用以下代码通过它(包括子目录)迭代目录中的第一个文件?:

$filename = "/Users/jMac-NEW/Desktop";
$it = new RecursiveDirectoryIterator($filename, RecursiveDirectoryIterator::SKIP_DOTS);
foreach (new RecursiveIteratorIterator($it) as $file) { ...

1 个答案:

答案 0 :(得分:0)

您的RecursiveDirectoryIterator是一个递归迭代器,因此您需要将其包装在RecursiveIteratorIterator中以遍历子目录。

然后,您可以使用RegexIterator创建模式来过滤该模式,以过滤掉您不想开始使用的文件。

$filename = __DIR__;
$it = new RegexIterator(
    new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator($filename, RecursiveDirectoryIterator::SKIP_DOTS)
    ),
    sprintf('|^%s[^A-La-l].*$|', preg_quote($filename . DIRECTORY_SEPARATOR, '|')
);

var_dump(iterator_to_array($it));