中易网

php如何读取某目录下的所有同类型文件

答案:3  悬赏:10  
解决时间 2021-01-25 12:08
php如何读取某目录下的所有同类型文件
最佳答案
PHP使用函数opendir、readdir、closedir来实现文件夹的操作,下面以一个最基本的例子来作为入门介绍:
//获取某目录下所有文件、目录名(不包括子目录下文件、目录名)  
    $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."";  
    }  
?>上面的代码显示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."";  
}这个例子使用dir类来编写,实际上用opendir、readdir、closedir来写也是相同的。
全部回答

PHP的glob() 函数返回匹配指定模式的文件名或目录。
该函数返回一个包含有匹配文件 / 目录的数组。如果出错返回 false。
语法
glob(pattern,flags)


参数
   
描述


 file    
   必需。规定检索模式。    
 

 
size    
   可选。规定特殊的设定。


GLOB_MARK - 在每个返回的项目中加一个斜线
GLOB_NOSORT - 按照文件在目录中出现的原始顺序返回(不排序)
GLOB_NOCHECK - 如果没有文件匹配则返回用于搜索的模式
GLOB_NOESCAPE - 反斜线不转义元字符
GLOB_BRACE - 扩充 {a,b,c} 来匹配 'a','b' 或 'c'
GLOB_ONLYDIR - 仅返回与模式匹配的目录项
GLOB_ERR - 停止并读取错误信息(比如说不可读的目录),默认的情况下忽略所有错误


注释:GLOB_ERR 是 PHP 5.1 添加的。
例子 1<?php
$a = glob("*.txt");
print_r(count($a));
?>
   
<?php
$files = glob('*.jpg'); // 其他文件做类似修改,比如 *.png, *.txt等。。有目录请添加绝对目录。比如:c:/album/*.jpg
echo 'total : ' , count($files); // $files是一个文件数组。
?>
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
如今的过滤机行业前景怎么样
北京隐形矫正牙齿的费用,想要了解下。
爬山时,如何预防毒蛇和咬伤急救呢?
乳头红肿疼痛请问是什么原因呢
银川风月艺彩ktv怎么样在哪
什么是超薄不磨牙贴面
有没有比较好的客厅沙发背景墙效果图,有的发
在还乐上借钱会查询征信吗?
上海红房子检查弱精好不好?检查费用大概要多
企业里的企业文化建设的词语叫做什么
玩游戏被骂很生气
全瓷牙是铸瓷牙吗
王者荣耀2017kpl什么时候结束
抽动症要做什么检查才能确诊?
耒阳正源学校2017准高一学费多少?在线等,急
推荐资讯
如何让微笑更具魅力?
新生儿宝宝鼻子不通气是怎么回事
从东岳大道坐什么可以到青山湖大道
五里桥社区居委会地址有知道的么?有点事想过
详解usb大容量存储设备为什么无法识别
asp的<% current_nav = "article.asp" echo o
Dr.G适合21岁左右男士用吗?
我也知道一英寸等于2.54厘米,我想知道的是怎
拾捡东西引出的法律问题
九天云财富值得加入吗
橘子石,苏罗,素落,须伦是什么?
有那些爱情感人短篇小说?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?