php遍历目录与文件夹的多种方法详解
2015-01-24信息快讯网
介绍几个php遍历目录的方法,可以遍历目录及目录中的文件,供大家参考
遍历目录或遍历目录下指定类型的文件,这是每一个童鞋在写程序的时候难免会用到的。PHP本身也提供了很多灰常有用的函数,正确地使用它们,不会有错滴。
下面就我个人学习过程中的一些总结,希望对想学PHP的童鞋有所帮助。
本函数可以列出指定目录下所有的文件(包括子目录下的)
function getfiles($path){ foreach(scandir($path) as $afile) { if($afile=='.'||$afile=='..') continue; if(is_dir($path.'/'.$afile)) { getfiles($path.'/'.$afile); } else { echo $path.'/'.$afile.'<br />'; } } } //简单的demo,列出当前目录下所有的文件 getfiles(__DIR__);
scandir() 是返回指定目录下所有的文件和目录组成的数组,在PHP中,还提供了一个灰常强大的函数glob(),glob()有2个参数,至于第2个参数是可选的,稍后再讲。 直接来看,用glob()怎么遍历目录的。
可以看出,glob()返回的内容中已经过滤掉了'.'和'..',其中*表示遍历目录下所有文件。相应的,如果改为*.txt,则会遍历目录下所的txt文件。是不是很方便呢?它的方便之处可不止这一点,据元芳说,这里面还藏着一个天大的秘密,是什么呢?以后再说,有兴趣的话,可以给我留言交流。
function getfiles($path){ foreach(glob($path) as $afile){ if(is_dir($afile)) { getfiles($afile.'/*'); } else { echo $afile.'<br />'; } } } //简单的demo,列出当前目录下所有的文件 getfiles(__DIR__);0
既然说用 *.txt,就会遍历目录下所的txt文件,那如果我想让它同时遍历某几种格式的文件呢?怎么办?肯定有童鞋想到用数组了,然后很快的写出来替换进去{*.txt,*.jpg,*.zip,...},当然也很快地发现,程序返回false,什么都得不到。不要失望,这涉及到了刚才所说的第2个可选参数,这个参数是用来改变glob的行为的,具体都有些什么,可以查阅PHP手册,这里不多讲,只说一个GLOB_BRACE,这是用来扩充 {a,b,c,...} 来匹配 'a','b' 或 'c',...的。用法如下:foreach(glob($path.'/{*.txt,*.jpg,*.zip,...}', GLOB_BRACE) as $fileName){...}
至于完整的遍历目录下所有的指定文件类型函数,我们可以看下面实例
遍历文件夹及子文件夹所有文件
<html> <body> <?php function traverse($path = '.') { $current_dir = opendir($path); //opendir()返回一个目录句柄,失败返回false while(($file = readdir($current_dir)) !== false) { //readdir()返回打开目录句柄中的一个条目 $sub_dir = $path . DIRECTORY_SEPARATOR . $file; //构建子目录路径 if($file == '.' || $file == '..') { continue; } else if(is_dir($sub_dir)) { //如果是目录,进行递归 echo 'Directory ' . $file . ':<br>'; traverse($sub_dir); } else { //如果是文件,直接输出 echo 'File in Directory ' . $path . ': ' . $file . '<br>'; } } } traverse('xxtt'); ?> </body> </html>
一些常用的实例
<?php $dir="E:/video"; //这里输入其它路径 //PHP遍历文件夹下所有文件 $handle=opendir($dir."."); echo "文件:<br>"; while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { echo $file; //输出文件名 } } closedir($handle); ?>
用了这段代码遍历所有文件,帮我把所有文件名存为一个数组。
<?php $s=explode("/n",trim(`dir/b e://video`)); print_r($s); ?> <?php $dir="E:/video"; //这里输入其它路径 //PHP遍历文件夹下所有文件 $handle=opendir($dir."."); echo "文件:<br>"; while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { $file=$file.','; //输出文件名 $file=explode(',',$file); } } print_r($file);//输出的就是数组了 closedir($handle); ?> <?php $dir="."; //这里输入其它路径 //PHP遍历文件夹下所有文件 $handle=opendir($dir."."); echo "文件:<br>"; //定义用于存储文件名的数组 $array_file = array(); while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { $array_file[] = $file; //输出文件名 } } closedir($handle); print_r("<pre>"); print_r($array_file); print_r("</pre>"); ?>
ThinkPHP3.1新特性之命名范围的使用
ThinkPHP3.1新特性之Action参数绑定
ThinkPHP3.1新特性之多层MVC的支持
php定界符<<<使用技巧和实例
php获取网页中图片、DIV内容的简单方法
PHP获取文件的MD5值并判断是否被修改的例子
ThinkPHP模板引擎之导入资源文件方法详解
php+ajax实现图片文件上传功能实例
php的SimpleXML方法读写XML接口文件实例解析
采用thinkphp自带方法生成静态html文件详解
PHP中多维数组的foreach遍历示例
使用PHP函数scandir排除特定目录
PHP遍历目录并返回统计目录大小
php实例分享之通过递归实现删除目录下的所有文件详解
PHP FTP操作类代码( 上传、拷贝、移动、删除文件/创建目录)
PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
php遍历文件夹下的所有文件和子文件夹示例
php遍历文件夹和文件列表示例分享
php无限遍历文件夹示例分享
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
php中引用符号(&)的使用详解
使用php验证复选框有效性的示例
PHP PDOStatement:bindParam插入数据错误问题分析
php curl模拟post请求小实例
php模板原理讲解
php inc文件使用的风险和注意事项
php打开远程文件的方法和风险及解决方法
php多用户读写文件冲突的解决办法
php上传文件中文文件名乱码的解决方法
FireFox浏览器使用Javascript上传大文件
php获取目录所有文件并将结果保存到数组(实例)
php上传文件,创建递归目录的实例代码
php文件夹与文件目录操作函数介绍
php 删除目录下N分钟前创建的所有文件的实现代码
如何修改和添加Apache的默认站点目录
PHP遍历某个目录下的所有文件和子文件夹的实现代码
使用PHP遍历文件目录与清除目录中文件的实现详解
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
使用迭代器 遍历文件信息的详解
php遍历所有文件及文件夹的方法深入解析