介绍几个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.'
';

}

}

} //简单的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.'
'; }

}

} //简单的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){...}

至于完整的遍历目录下所有的指定文件类型函数,我们可以看下面实例

遍历文件夹及子文件夹所有文件

代码如下:

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 . ':
';

traverse($sub_dir);

} else { //如果是文件,直接输出

echo 'File in Directory ' . $path . ': ' . $file . '
';

}

}

}

traverse('xxtt');

?>

一些常用的实例

代码如下:<?php

$dir="E:/video"; //这里输入其它路径

//PHP遍历文件夹下所有文件

$handle=opendir($dir.".");

echo "文件:
";

while (false !== ($file = readdir($handle)))

{

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

echo $file; //输出文件名

}

}

closedir($handle);

?>

用了这段代码遍历所有文件,帮我把所有文件名存为一个数组。

代码如下:<?php

$s=explode("/n",trim(`dir/b e://video`));

print_r($s);

?>

$dir="E:/video"; //这里输入其它路径

//PHP遍历文件夹下所有文件

$handle=opendir($dir.".");

echo "文件:
";

while (false !== ($file = readdir($handle)))

{

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

$file=$file.','; //输出文件名

$file=explode(',',$file);

}

}

print_r($file);//输出的就是数组了

closedir($handle);

?>

$dir="."; //这里输入其它路径

//PHP遍历文件夹下所有文件

$handle=opendir($dir.".");

echo "文件:
";

//定义用于存储文件名的数组

$array_file = array();

while (false !== ($file = readdir($handle)))

{

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

$array_file[] = $file; //输出文件名

}

}

closedir($handle);

print_r("

");

print_r($array_file);

print_r("

");

?>

php遍历目录与文件夹,介绍几种php遍历目录与文件夹的方法相关推荐

  1. 介绍一种在MATLAB中获取股市数据的方法

    介绍一种在MATLAB中获取股市数据的方法: >>clear >>c=yahoo 系统会返回 c = url: 'http://finance.yahoo.com'       ...

  2. linux检测到文件更新执行,一种更新Linux系统中文件的方法及操作方法专利_专利查询 - 天眼查...

    1. 一种更新Linux系统中文件的方法,其特征在于,包括在基于Linux系统的电视的主 程序中设计一个功能接口,该功能接口在电视系统检测到外部存储设备接入时被调用,所 述功能接口实现以下内容: A: ...

  3. 打开stl文件_介绍一种修复、查看以及打印STL三维模型文件的工具

    slic3r是一种3D打印切片软件,这里可以帮助大家用于协助修复STL文件,并能帮助设定3D打印选项的小工具,下载后免安装直接可以用.官方网站点击左下角查看原文.我们也知道3D打印爱好者必不可少的也是 ...

  4. python蚂蚁森林自动偷能量_介绍两种实现蚂蚁森林自动“偷”能量的方法

    起因 最近博主迷上了偷能量(蚂蚁森林),后来发现一好友每天定点来博主森林偷能量,很准时 大家发现没,每天都是7.16分准时来偷,每天!因为博主的能量是7.16分成熟~ 本来博主呢,以前也用过这些方法, ...

  5. linux下模拟cc攻击命令,介绍几种用Linux命令判断CC攻击的方法

    查看所有80端口的连接数 netstat -nat|grep -i "80″|wc -l 对连接的IP按连接数量进行排序 netstat -ntu | awk '{print $5}' | ...

  6. 抠火焰,介绍几种实用的抠黑色背景火焰素材的方法

    抠火焰分为真抠和假抠,所谓真抠就是最后的结果不挑背景且不依赖于图层混合模式.看过很多抠火焰的,假抠的居多,当然,两者没有高下之分. 原素材:(黑色的背景是它有这么多抠法的关键因素) 要求将火焰抠出来, ...

  7. python如何打开文件编辑界面_Python-PyQt5-图形可视化界面(5)--打开文件或文件夹--QFileDialog...

    Ps:水平有限,欢迎建议和挑错 QFileDialog是一个打开文件或者文件夹选择对话框. 类似于我们平时上传文件选择文件的界面 image.png 介绍 打开文件有以下3种: 1.单个文件打开 QF ...

  8. JavaWeb学习笔记-Tomcat虚拟目录与虚拟主机介绍

    Tomcat虚拟目录与虚拟主机介绍 1.主配置文件 server.xml conf文件夹中包含server.xml配置文件 8080 端口:tomcat服务默认端口号.访问url地址后必须手动写:80 ...

  9. python读取.mat文件,python将变量存为.mat文件详细介绍

    在进行数据处理的过程中,经常会用到Matlab和python两种工具,.mat文件是Matlab数据存储的标准数据格式,通过创建一个.mat文件详细介绍两种工具之间的数据读取和存储. 一.python ...

最新文章

  1. Windows 10截屏动画失效怎么恢复?
  2. C++和Java中类继承同名函数的区分
  3. 【Python实现网络爬虫】Scrapy爬取网易新闻(仅供学习交流使用!)
  4. JVM和GC知识点整理
  5. [恢]hdu 2042
  6. (IT)这个行当里你应该知道的10个小秘密
  7. UVa 1399 Puzzle
  8. gtasa手机版android7.1,圣安地列斯psp移植版
  9. 比特红:万物可直播、人人能带货
  10. PCIE实现PIO模式寄存器读写调试记录
  11. vs2019中出现PyTorch is not linked with support for cuda devices的解决方法
  12. Android 適配器的回調
  13. 使用windows自带的磁盘测速工具对硬盘进行测速——从此无需额外下载第三方硬盘测速工具
  14. 三星 GALAXY Note 4 柏林发布会
  15. 罗克韦尔AB PLC安装Studio 5000 V35的具体步骤演示
  16. LTE:PHICH物理层处理过程及资源映射
  17. TVM中的auto-scheduling机制(Ansor)学习笔记
  18. 优酷路由宝刷梅林_优酷路由宝 YK-L1c 和 YK-L1 刷入 Breed 不死和 hiboy Padavan 固件...
  19. 休假管理系统——类图文档
  20. centos上安装和卸载mysql

热门文章

  1. jboss fuse 教程_IDC关于使用JBoss Fuse的商业价值的报告(与Apache Camel一起使用)
  2. 在Java中将时间单位转换为持续时间
  3. 通过READ-BEHIND CACHE来控制缓慢的生产者
  4. 成为Java流专家–第2部分:中级操作
  5. Apache Camel 2.23发布
  6. 使用Spring Boot 2.0的Spring Security:保护端点
  7. Guavate:桥接Guava和Java8的微型库
  8. java枚举和枚举类_Java枚举:您拥有优雅,优雅和力量,这就是我所爱!
  9. glassfish_具有GlassFish和一致性的高性能JPA –第1部分
  10. 带有Angular JS的Java EE 7 –第1部分