如何通过php正确显示目录和子目录中的所有文件

时间:2019-07-15 07:26:01

标签: php

我有4个文件夹,我要检查其中的图像和php文件。 这是结构文件夹的布置。

主文件夹包含两个子文件夹(second_folder和third_folder),而 third_folder 包含一个子文件夹(fourth_folder) 等。

当前使用以下代码,我只能访问 first_main_folder 中的所有文件。

$files = glob('first_Main_folder/*.{jpg,png,gif,php}', GLOB_BRACE);
foreach($files as $file) {
echo "<br>$file<br>";
}

请访问 其余子文件夹中的文件(second_folder,third_folder,fourth_folder),依此类推

谢谢

first_Main_folder
test.png
data.php
check.gif


    second_folder
    tony.jpg
    mark.gif
    action.php

    third_folder
    index.php
    post.php
    sender.php
    han.gif

        fourth_folder
            catch.php
            index2.php
            redirect.php

       and so on 

2 个答案:

答案 0 :(得分:0)

下面的此功能将同时扫描主目录和所有子目录。这个对我有用。谢谢。

function outputFiles1($path){
    // Check directory exists or not
    if(file_exists($path) && is_dir($path)){
        // Search the files in this directory
        $files = glob($path ."/*");
        if(count($files) > 0){
            // Loop through retuned array
            foreach($files as $file){
                if(is_file("$file")){
                    // Display only filename
                    echo basename($file) . filesize($file) . "<br>";
                } else if(is_dir("$file")){
                    // Recursively call the function if directories found
                    outputFiles1("$file");
                }
            }
        } else{
            echo "ERROR: No such file found in the directory.";
        }
    } else {
        echo "ERROR: The directory does not exist.";
    }
}

// Call the function
outputFiles1("C:/xampp/htdocs/first_main_folder");

答案 1 :(得分:0)

以下示例摘自this post

function rsearch($folder, $pattern='/.*/') {
    $dir = new RecursiveDirectoryIterator($folder);
    $ite = new RecursiveIteratorIterator($dir);

    $files = new RegexIterator($ite, $pattern, RegexIterator::GET_MATCH);
    $fileList = array();

    foreach($files as $file) {
        $fileList = array_merge($fileList, $file);
    }
    return $fileList;
}


$result = rsearch('./');
print_r($result);