以递归方式查找文件夹中的所有.php文件

时间:2013-02-24 18:25:01

标签: php

使用PHP,我怎样才能找到文件夹或其子文件夹(任何深度)中的所有.php文件?

4 个答案:

答案 0 :(得分:33)

您可以使用RecursiveDirectoryIteratorRecursiveIteratorIterator

$di = new RecursiveDirectoryIterator(__DIR__,RecursiveDirectoryIterator::SKIP_DOTS);
$it = new RecursiveIteratorIterator($di);

foreach($it as $file) {
    if (pathinfo($file, PATHINFO_EXTENSION) == "php") {
        echo $file, PHP_EOL;
    }
}

答案 1 :(得分:9)

只需添加以下内容:

function listFolderFiles($dir){
    $ffs = scandir($dir);
    $i = 0;
    $list = array();
    foreach ( $ffs as $ff ){
        if ( $ff != '.' && $ff != '..' ){
            if ( strlen($ff)>=5 ) {
                if ( substr($ff, -4) == '.php' ) {
                    $list[] = $ff;
                    //echo dirname($ff) . $ff . "<br/>";
                    echo $dir.'/'.$ff.'<br/>';
                }    
            }       
            if( is_dir($dir.'/'.$ff) ) 
                    listFolderFiles($dir.'/'.$ff);
        }
    }
    return $list;
}

$files = array();
$files = listFolderFiles(dirname(__FILE__));

答案 2 :(得分:3)

很晚。 但我认为这对那些在搜索后降落在这里的人有用。

我修改了由 supajason 创建的代码 因为提供的代码没有返回一致的结果: 主要是由于使用了命名法。

我还添加了一些功能。

希望它有用!

select landingPage from landing where currentTime < endTime OR currentTime > startTime

答案 3 :(得分:0)

这与此处的另一个答案类似,但是删除了SKIP_DOTS,因为它不是 并与strict_types一起使用:

<?php

$o_dir = new RecursiveDirectoryIterator('.');
$o_iter = new RecursiveIteratorIterator($o_dir);

foreach ($o_iter as $o_info) {
   if ($o_info->getExtension() == 'php') {
      echo $o_info->getPathname(), "\n";
   }
}

https://php.net/splfileinfo.getextension