PHP读取目录下所有文件

PHP读取目录下所有文件,第1张

php中读取目录下的文件名的方式确实不少,最简单的是scandir,具体代码如下:

$dir="./目录名/"

$file=scandir($dir)

print_r($file)

PHP使用函数opendir、readdir、closedir来实现文件夹的 *** 作,下面以一个最基本的例子来作为入门介绍:

<?php

//获取某目录下所有文件、目录名(不包括子目录下文件、目录名)  

    $dir='C:/Users/'

    $handler = opendir($dir)  

    while (($filename = readdir($handler)) !== false) {//务必使用!==,防止目录下出现类似文件名“0”等情况  

        if ($filename != "." && $filename != "..") {  

                $files[] = $filename   

           }  

       }  

    }  

    closedir($handler)  

       

//打印所有文件名  

    foreach ($filens as $value) {  

        echo $value."<br />"  

    }  

?>

上面的代码显示c:\users文件夹里面的所有的文件和文件夹,忽略.和..两个特殊含义的文件夹,程序把所有文件和文件夹名称扫描保存到数组里面,然后显示。

如果你需要对文件进行过滤,例如只处理*.xls文件,可以在过滤.和..的地方添加代码。例如:

if (substr($filename,-4)=='.xls'){

当你理解了上面的代码之后,你就能编写扫描子文件夹、以及子 文件夹里面文件的方法了。基本思路是使用递归,下面我给出一个简单的例子:

function get_allfiles($path,&$files) {  

    if(is_dir($path)){  

        $dp = dir($path)  

        while ($file = $dp ->read()){  

            if($file !="." && $file !=".."){  

                get_allfiles($path."/".$file, $files)  

            }  

        }  

        $dp ->close()  

    }  

    if(is_file($path)){  

        $files[] =  $path  

    }  

}  

     

function get_filenamesbydir($dir){  

    $files =  array()  

    get_allfiles($dir,$files)  

    return $files  

}  

     

$filenames = get_filenamesbydir("c:/users/")  

//打印所有文件名,包括路径  

foreach ($filenames as $value) {  

    echo $value."<br />"  

}

这个例子使用dir类来编写,实际上用opendir、readdir、closedir来写也是相同的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12002596.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存