首页
Portal
业界资讯
社区
BBS
我的家园
Space
个人空间
导读
Guide
登录
/
注册
用户名
Email
自动登录
找回密码
密码
登录
注册
搜索
搜索
本版
帖子
用户
本版
帖子
用户
帖子
好友
道具
勋章
收藏
任务
淘帖
门户
导读
设置
我的收藏
退出
腾讯QQ
微信登录
首页
›
≡≡网络技术≡≡
›
PHP语言
›
php遍历目录与文件夹的多种方法详解
返回列表
PHP
php遍历目录与文件夹的多种方法详解
[ 复制链接 ]
灰儿
2017-1-30 21:50:28
遍历目录或遍历目录下指定类型的文件,这是每一个童鞋在写程序的时候难免会用到的。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>");
?>
文章来源:
http://www.jb51.net/article/43186.htm
相关帖子
打开含有AVI的文件夹出现explorer.exe-应用程序错误的解决方法
php自动读取文件夹下所有图片并分页显示
win7系统如何用自带的锁密工具对电脑里的文件夹进行加密?
win7 32位系统打开带点的特殊文件夹(畸形目录)的方法
江湖家居6.0标准版手工升级到6.0至尊版方法
PHP获取文件夹下所有子文件夹的名称及子文件夹所有图片
安卓手机系统怎么访问win10的共享文件夹
使用php scandir函数遍历文件夹目录和所有文件
PHP遍历文件夹目录;获取文件夹目录数组
使用PHP遍历文件夹与子目录的函数代码
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
回复
本版积分规则
回帖后跳转到最后一页
灰儿
管理员
9831篇
主题总数
7
总热度
提问
+关注
产品动态
2024-04-23
电子书在线阅读和下载网址推荐
2024-04-23
泛微(weaver)e-cology_V10公文管理,公文环节(过程定义)设置
2024-04-23
泛微(weaver)e-cology_V10公文管理,收文单位隐藏下级单位
2024-04-20
《再次成为神》免费下载观看
2024-04-20
《為甚麼會有人類》
2024-04-16
Linux下查询文件夹中文件数量的方法
2024-04-16
一款超级好用的Linux系统远程连接工具——FinalShell
2024-04-15
linux将用户添加到辅助组,修改用户所属组的方法
热点推荐
1
电子书在线阅读和下载网址推荐
2
泛微(weaver)e-cology_V10公文管理,公文环节(过程定义)设置
3
泛微(weaver)e-cology_V10公文管理,收文单位隐藏下级单位
4
《再次成为神》免费下载观看
5
《為甚麼會有人類》
6
Linux下查询文件夹中文件数量的方法
7
一款超级好用的Linux系统远程连接工具——FinalShell
8
linux将用户添加到辅助组,修改用户所属组的方法
热门板块
PC操作系统
启动和引导
手机操作系统
硬件相关
办公软件
多媒体技术
产品动态
2024-04-23
电子书在线阅读和下载网址推荐
2024-04-23
泛微(weaver)e-cology_V10公文管理,公文环节(过程定义)设置
2024-04-23
泛微(weaver)e-cology_V10公文管理,收文单位隐藏下级单位
2024-04-20
《再次成为神》免费下载观看
2024-04-20
《為甚麼會有人類》
2024-04-16
Linux下查询文件夹中文件数量的方法
2024-04-16
一款超级好用的Linux系统远程连接工具——FinalShell
2024-04-15
linux将用户添加到辅助组,修改用户所属组的方法
热点推荐
1
电子书在线阅读和下载网址推荐
2
泛微(weaver)e-cology_V10公文管理,公文环节(过程定义)设置
3
泛微(weaver)e-cology_V10公文管理,收文单位隐藏下级单位
4
《再次成为神》免费下载观看
5
《為甚麼會有人類》
6
Linux下查询文件夹中文件数量的方法
7
一款超级好用的Linux系统远程连接工具——FinalShell
8
linux将用户添加到辅助组,修改用户所属组的方法
热门板块
PC操作系统
启动和引导
手机操作系统
硬件相关
办公软件
多媒体技术
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言
了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言
了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。