首页 > php文件操作 > php读出目录下的所有目录及子目录下文件

php读出目录下的所有目录及子目录下文件

一个利用php读出目录下的所有目录及子目录下文件的代码,很简单方便的第一个就是读取一级目录,后面可以无限目录读取,实例代码如下:

<?php
$dirname = @opendir("abc") or die("打开目录不成功<br>");
readdir($dirname) . "<br>";
readdir($dirname) . "<br>";
while (($filess = readdir($dirname)) != false) {
    if (is_dir("abc/" . $filess)) {
        echo "目录:" . $filess . "<br>";
    } else {
        echo "文件:" . $filess . "<br>";
    }
}
closedir($dirname);
?>

只能读出html文件名,读不出abc目录下的目录名,下面我们再看一实例,实例代码如下:

<?php
/*
 *   递归获取指定路径下的所有文件或匹配指定正则的文件(不包括"."和".."),结果以数组形式返回
 *   @param  string  $dir
 *   @param  string  [$pattern]
 *   @return array
*/
function file_list($dir, $pattern = "") {
    $arr = array();
    $dir_handle = opendir($dir);
    if ($dir_handle) {
        // 这里必须严格比较,因为返回的文件名可能是"0"
        while (($file = readdir($dir_handle)) !== false) {
            if ($file === '.' || $file === '..') {
                continue;
            }
            $tmp = realpath($dir . '/' . $file);
            if (is_dir($tmp)) {
                $retArr = file_list($tmp, $pattern);
                if (!emptyempty($retArr)) {
                    $arr[] = $retArr;
                }
            } else {
                if ($pattern === "" || preg_match($pattern, $tmp)) {
                    $arr[] = $tmp;
                }
            }
        }
        closedir($dir_handle);
    }
    return $arr;
}
// 列出网站根目录下所有以".php"扩展名(不区分大小写)结尾的文件
echo '<pre>';
print_r(file_list($_SERVER['DOCUMENT_ROOT'], "//.php$/i"));
echo '</pre>';
?>


本文链接:http://www.phprm.com/wenjian/fs4125.html

收藏随意^^请保留教程地址.

标签:php读出目录 所有目录

发表留言