• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php遍历目录与文件夹的多种方法详解_php实例

php 搞代码 4年前 (2022-01-25) 13次浏览 已收录 0个评论

遍历目录或遍历目录下指定类型的文件,这是每一个童鞋在写程序的时候难免会用到的。PHP本身也提供了很多灰常有用的函数,正确地使用它们,不会有错滴。
下面就我个人学习过程中的一些总结,希望对想学PHP的童鞋有所帮助。
本函数可以列出指定目录下所有的文件(包括子目录下的)

function getfiles($path){ <BR>foreach(scandir($path) as $afile)<BR>{<BR>if($afile=='.'||$afile=='..') continue; <BR>if(is_dir($path.'/'.$afile)) <BR>{ <BR>getfiles($path.'/'.$afile); <BR>} else { <BR>echo $path.'/'.$afile.'<br />'; <BR>} <BR>} <BR>} //简单的demo,列出当前目录下所有的文件<BR>getfiles(__DIR__);<BR> 


scandir() 是返回指定目录下所有的文件和目录组成的数组,在PHP中,还提供了一个灰常强大的函数glob(),glob()有2个参数,至于第2个参数是可选的,稍后再讲。 直接来看,用glob()怎么遍历目录的。
可以看出,glob()返回的内容中已经过滤掉了’.’和’..’,其中*表示遍历目录下所有文件。相应的,如果改为*.txt,则会遍历目录下所的txt文件。是不是很方便呢?它的方便之处可不止这一点,据元芳说,这里面还藏着一个天大的秘密,是什么呢?以后再说,有兴趣的话,可以给我留言交流。

function getfiles($path){ <BR>foreach(glob($path) as $afile){ <BR>if(is_dir($afile)) <BR>{ getfiles($afile.'/*'); } else { echo $afile.'<br />'; } <BR>} <BR>} //简单的demo,列出当前目录下所有的文件<BR>getfiles(__DIR__);0<BR> 


既然说用 *.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){…}
至于完整的遍历目录下所有的指定文件类型函数,我们可以看下面实例

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

<BR>    <body><BR>        <?php<BR>            function traverse($path = '.') {<BR>                $current_dir = opendir($path);    //opendir()返回一个目录句柄,失败返回false<BR>                while(($file = readdir($current_dir)) !== false) {    //readdir()返回打开目录句柄中的一个条目<BR>                    $sub_dir = $path . DIRECTORY_SEPARATOR . $file;    //构建子目录路径<BR>                    if($file == '.' || $file == '..') {<BR>                        continue;<BR>                    } else if(is_dir($sub_dir)) {    //如果是目录,进行递归<BR>                        echo 'Directory ' . $file . ':<br>';<BR>                        traverse($sub_dir);<BR>                    } else {    //如果是文件,直接输出<BR>                        echo 'File in Directory ' . $path . ': ' . $file . '<br>';<BR>                    }<BR>                }<BR>            }<br><br>            traverse('xxtt');<BR>        ?><BR>    <BR><BR>


一些常用的实例

<?php<BR>$dir="E:/video"; //这里输入其它路径<BR>//PHP遍历文件夹下所有文件<BR>$handle=opendir($dir."."); <BR>echo "文件:<br>";<BR>while (false !== ($file = readdir($handle)))<BR>{<BR>if ($file != "." && $file != "..") {<BR>echo $file; //输出文件名<BR>}<BR>}<BR>closedir($handle); <BR>?><BR> 


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

<?php<BR>$s=explode("/n",trim(`dir/b e://video`));<BR>print_r($s);<BR>?><BR><?php <BR>$dir="E:/video"; <em style="color:transparent">本@文来源[email protected]搞@^&代*@码网(</em><q>搞代gaodaima码</q>//这里输入其它路径 <BR>//PHP遍历文件夹下所有文件 <BR>$handle=opendir($dir."."); <BR>echo "文件:<br>"; <BR>while (false !== ($file = readdir($handle))) <BR>{ <BR>if ($file != "." && $file != "..") { <BR>$file=$file.','; //输出文件名 <BR>$file=explode(',',$file);<BR>} <BR>} <BR>print_r($file);//输出的就是数组了<BR>closedir($handle); <BR>?><BR><?php <BR>$dir="."; //这里输入其它路径 <BR>//PHP遍历文件夹下所有文件 <BR>$handle=opendir($dir."."); <BR>echo "文件:<br>"; <BR>//定义用于存储文件名的数组<BR>$array_file = array();<BR>while (false !== ($file = readdir($handle))) <BR>{ <BR>if ($file != "." && $file != "..") { <BR>$array_file[] = $file; //输出文件名 <BR>} <BR>} <BR>closedir($handle);<BR>print_r("<pre class="prettyprint linenums">");<BR>print_r($array_file);<BR>print_r("

“);
?>


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php遍历目录与文件夹的多种方法详解_php实例
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址