![](/img/trans.png)
[英]How to scan a directory and all subdirectorys for specific files (with .php extension)
[英]Scan directory for files with specific extensions recursively
我正在嘗試查找具有特定擴展名的文件夾和子文件夾中的所有文件。
$dir = new RecursiveDirectoryIterator($directory);
$iter = new RecursiveIteratorIterator($dir);
$files = new RegexIterator($iter, '/.*\.(src|in|out|rc)$/i', RecursiveRegexIterator::GET_MATCH);
我的輸出應如下所示var_dump()
array(105) {
[2]=>
string(6) "00.out"
[3]=>
string(6) "00.src"
[4]=>
string(6) "01.out"...
}
實際結果
object(RegexIterator)#4 (1) {
["replacement"]=>
NULL
}
我在哪里做錯了? 感謝幫助!
glob()函數根據libc glob()函數所使用的規則搜索所有與模式匹配的路徑名,該規則類似於普通shell所使用的規則。
foreach (glob("*.txt") as $filename) {
echo "$filename size " . filesize($filename) . "\n";
}
這是agd243的一個漂亮函數,它使用glob()擴展查找所有文件,並將其作為數組返回:
function findFiles($directory, $extensions = array()) {
function glob_recursive($directory, &$directories = array()) {
foreach(glob($directory, GLOB_ONLYDIR | GLOB_NOSORT) as $folder) {
$directories[] = $folder;
glob_recursive("{$folder}/*", $directories);
}
}
glob_recursive($directory, $directories);
$files = array ();
foreach($directories as $directory) {
foreach($extensions as $extension) {
foreach(glob("{$directory}/*.{$extension}") as $file) {
$files[$extension][] = $file;
}
}
}
return $files;
}
var_dump(findFiles("C:\\baseFolder", array (
"src",
"in",
"out",
"rc"
)));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.