使用PHP遍历文件夹与子目录的函数代码

2015-01-24信息快讯网
我们要使用的函数有 Scandir,它的作用是列出指定路径中的文件和目录,就像 Dir 一样。

使用PHP遍历文件夹与子目录的函数代码_信息快讯网
> 与更强力的 Glob() 函数,作用是以数组的形式返回与指定模式相匹配的文件名或目录。
> 友情提醒,千万别像小邪那样在电脑前面呆太长时间,否则就会像小邪一样得见鬼的高血糖。

一. 遍历单层文件夹:

> 在扫描单层文件夹的问题是,两个函数的结果虽有不同,不过表现是相差不大的。
> Scandir 函数会提供额外两行,分别是 “.” 和 “..” ,而 Glob 则是没有的。

 
function get_dir_scandir(){ 
$tree = array(); 
foreach(scandir('./') as $single){ 
echo $single."<br/>\r\n"; 
} 
} 
get_dir_scandir(); 

function get_dir_glob(){ 
$tree = array(); 
foreach(glob('./*') as $single){ 
echo $single."<br/>\r\n"; 
} 
} 
get_dir_glob(); 

二. 递归遍历文件树:

> 在递归扫描文件夹树的问题上,还是 Glob 函数的表现好一点,很准确的说。
> Scandir 函数会莫名其妙扫描两次 ../ 处的文件,也就是说如果小邪有俩文件。
> ../b.php 和 ../a.php,结果就会在扫描报告上面出现两次,很是奇怪。
 
//Update at 2010.07.25 - 以下代码作废 
$path = '..'; 
function get_filetree_scandir($path){ 
$tree = array(); 
foreach(scandir($path) as $single){ 
if(is_dir('../'.$single)){ 
$tree = array_merge($tree,get_filetree($single)); 
} 
else{ 
$tree[] = '../'.$single; 
} 
} 
return $tree; 
} 
print_r(get_filetree_scandir($path)); 

//Update at 2010.07.25 - 以下为新代码 
$path = './'; 
function get_filetree_scandir($path){ 
$result = array(); 
$temp = array(); 
if (!is_dir($path)||!is_readable($path)) return null; //检测目录有效性 
$allfiles = scandir($path); //获取目录下所有文件与文件夹 
foreach ($allfiles as $filename) { //遍历一遍目录下的文件与文件夹 
if (in_array($filename,array('.','..'))) continue; //无视 . 与 .. 
$fullname = $path.'/'.$filename; //得到完整文件路径 
if (is_dir($fullname)) { //是目录的话继续递归 
$result[$filename] = get_filetree_scandir($fullname); //递归开始 
} 
else { 
$temp[] = $filename; //如果是文件,就存入数组 
} 
} 
foreach ($temp as $tmp) { //把临时数组的内容存入保存结果的数组 
$result[] = $tmp; //这样可以让文件夹排前面,文件在后面 
} 
return $result; 
} 
print_r(get_filetree_scandir($path)); 

> Glob 函数扫描灰常准确,并且会自动按照字母排好顺序,貌似是最佳方案。
 
$path = '..'; 
function get_filetree($path){ 
$tree = array(); 
foreach(glob($path.'/*') as $single){ 
if(is_dir($single)){ 
$tree = array_merge($tree,get_filetree($single)); 
} 
else{ 
$tree[] = $single; 
} 
} 
return $tree; 
} 
print_r(get_filetree($path)); 

基于curl数据采集之正则处理函数get_matches的使用
基于curl数据采集之单页面并行采集函数get_htmls的使用
基于curl数据采集之单页面采集函数get_html的使用
php 目录遍历、删除 函数的使用介绍
php中get_headers函数的作用及用法的详细介绍
php获取本地图片文件并生成xml文件输出具体思路
php笔记之:有规律大文件的读取与写入的分析
input file获得文件根目录简单实现
dhtmlxTree目录树增加右键菜单以及拖拽排序的实现方法
关于二级目录拖拽排序的实现(源码示例下载)
PHP中操作ini配置文件的方法
Apache下禁止php文件被直接访问的解决方案
PHP删除非空目录的函数代码小结
php删除与复制文件夹及其文件夹下所有文件的实现代码
php删除文件夹及其文件夹下所有文件的函数代码
php定时删除文件夹下文件(清理缓存文件)
单一index.php实现PHP任意层级文件夹遍历(Zjmainstay原创)
php递归创建和删除文件夹的代码小结
PHP安全配置详细说明
抓取并下载CSS中所有图片文件的php代码
php方法调用模式与函数调用模式简例
PHP无刷新上传文件实现代码
PHP pathinfo()获得文件的路径、名称等信息说明
PHP获取MAC地址的函数代码
php中将网址转换为超链接的函数
PHP文件操作实现代码分享
PHP url 加密解密函数代码
PHP 无限分类三种方式 非函数的递归调用!
php中设置多级目录session的问题
php 文件上传类代码
PHP在获取指定目录下的目录,在获取的目录下面再创建文件,多平台
PHP 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
php 目录与文件处理-郑阿奇(续)
PHP获取文件绝对路径的代码(上一级目录)
php Rename 更改文件、文件夹名称
rrmdir php中递归删除目录及目录下的文件
php visitFile()遍历指定文件夹函数
©2014-2024 dbsqp.com