在文件夹/目录(PHP)中搜索特定的文件扩展名

问题描述:

我试图在PHP中设计一个程序,它允许我在一个已知的目录中找到具有特定文件扩展名的文件(例如.jpg,.shp等)其中包含多个文件夹。 示例代码,文档或有关我将需要使用什么方法的信息将非常感谢。在文件夹/目录(PHP)中搜索特定的文件扩展名

glob是很容易的:

<?php 
foreach (glob("*.txt") as $filename) { 
    echo "$filename size " . filesize($filename) . "\n"; 
} 
?> 

有用于在readdir page递归下降了几点建议。

我相信PHP的水珠()函数是你在寻找什么:

http://php.net/manual/en/function.glob.php

看看PHP的SPL DirectoryIterator

+0

+1非常好!我忽略了SPL。不过,OP应该先熟悉一些基本的东西。 – 2009-11-30 14:13:10

+0

如果学习PHP,SPL是一个开始的好地方,因为在那里赢得的胜利远远超过PHP的传统,不一致的函数库。 – 2009-11-30 14:52:43

使用readdir可以获得文件列表,如果它匹配您所需的文件名模式,则可以使用fnmatch。在函数内部完成所有这些操作,并在查找目录时调用您的函数。如果你遇到了这个问题,可以问另一个问题(或者如果你真的不知道从哪里开始的话,可以发表评论)。

glob会让你得到给定目录中的所有文件,但不是子目录。如果你需要太,你将需要:10获得递归,20转到10

下面是一个伪伪代码:

function getFiles($pattern, $dir) { 
    $files = glob($dir . $pattern); 
    $folders = glob($dir, GLOB_ONLYDIR); 
    foreach ($folders as $folder) { 
     $files = $files + getFiles($folder); 
    } 
    return $files; 
} 

以上显然需要进行调整,以得到它的工作,但希望你能明白这一点(记住不要跟随“..”或“。”的目录链接,否则你将进入无限循环城镇)。