我有一个文件夹,其中有一些文件和子文件夹。我需要返回具有给定扩展名的文件名或相对地址(如果文件位于子文件夹中),例如.html
。
例如,这是给定文件夹的结构:
因此,代码应该返回此值(理想情况下是在数组中):
它只是拉出带有
.html
扩展名的名称,但是我真的不知道如何解决这个问题。
最佳答案
您可以使用 RecursiveDirectoryIterator
递归获取所有文件,然后使用 RegexIterator
过滤结果以仅遍历*.html
文件。要获得相对地址,可以使用 RecursiveDirectoryIterator::getSubPathname()
。
$directory = '../path/to/your/folder';
$all_files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory));
$html_files = new RegexIterator($all_files, '/\.html$/');
foreach($html_files as $file) {
echo $html_files->getSubPathname(), PHP_EOL;
}
如果确实需要数组(通常不需要可迭代对象),则可以在
foreach
中轻松构建一个数组,而不是在echo
中构建每个子路径。
关于php - 在目录树中查找具有给定扩展名的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9748320/