php遍历目录与文件夹的多种方法详解
发布时间:2024-05-02 17:14:33
遍历目录或遍历目录下指定类型的文件,这是每一个童鞋在写程序的时候难免会用到的。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>");
?>


猜你喜欢
- 我们在用爬虫对门户网站进行模拟登录是总会有输入图片验证码的,例如这种那我们怎么解决这个问题实现全自动的模拟登录呢?只要思想不滑坡,办法总比困
- Hi, 大家好~ 好久没有发有营养的东西,今天就扔一篇最近热点的Google Chrome 浏览器的试用心得吧。先说个比较搞的事情,Goog
- 1 PromisePromise有一个缺点是一旦创建无法取消,所以本质上Promise是无法被终止的.但是我们可以通过中断调用链或中断Pro
- 效果图基本思路在 OpenCV 中使用VideoCapture方法初始化视频渲染对象创建灰度图像导入预训练模型,识别脸部和人脸标志计算上唇和
- python配置文件有.conf,.ini,.txt等多种python集成的 标准库的 ConfigParser 模块提供一套 API 来读
- 打印100-999之间的回文数(即百位和个位的数字相等),并每10个打印一行i = 100x = 0 # 使用计数器,每10个换行打印whi
- 一份完全按照李航<<统计学习方法>>介绍的HMM代码,供大家参考,具体内容如下#coding=utf8 '&
- 以下就是对超常用的PHP正则表达式进行的收集整理,为了方便大家更快更好的掌握php正则表达式。一、表单验证匹配验证账号,字母开头,允许 5-
- 最近在为公司做一个门户网站,项目并不咋D,可规划却不小.在做的过程中就发现修改占了很大的工作量.于是就开始想了想如何使前端修改轻松一些.这个
- 目录什么是分区表分区表应用场景分区表的限制分区类型分区表的使用1、范围分区2、列表分区(list分区)3、列分区4、hash分区5、秘钥分区
- 如果直接在命令行中利用input和raw_input读入一个文件来处理,并且想要采用直接将文件拖入命令行来处理的方式,input方法可以直接
- 需求背景女朋友的论文需要爬取YouTube视频热评,但爬下来的都是外文。主要设计 读取一个表格文件,获取需要翻译的文本
- 网站 首页页面宽度 px Yahoo! 950 淘宝 950 MySpace 960 新浪 950 网易 960 Live Search 9
- 创建视图创建视图success.blade.php<!doctype html><html lang="{{ s
- 1. 为什么要备份数据先说一下为什么需要备份MySQL数据?一句话总结就是:为了保证数据的安全性。如果我们把数据只存储在一个地方,如果物理机
- 这篇文章主要介绍了python enumerate内置函数用法总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价
- Python操作MySQL主要使用两种方式:原生模块 pymsqlORM框架 SQLAchemypymqlpymsql是Python中操作M
- css usage是一个基于firebug的firefox扩展,可以用来查看页面中的CSS的使用情况,可以清楚的查看css文件中所有的规则在
- Python是一门弱类型语言,很多从C/C++转过来的朋友起初不是很适应。比如,在声明一个函数时,不能指定参数的类型。用C做类比,那就是所有
- 本文实例讲述了Go语言中使用反射的方法。分享给大家供大家参考。具体实现方法如下:// Data Modeltype Dish struct