<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="php的opendir、readdir实现递归读取目录及子目录下所有文件名的方法" id="card1">
<p> 游客</p><p>
标题:php的opendir、readdir实现递归读取目录及子目录下所有文件名的方法<br/>
正文:<br/>
本文实例讲述了php读取目录及子目录下所有文件名的方法，分享给大家供大家参考。具体实现方法如下：一般来说php中读取目录下的文件名的方式确实不少，最简单的是scandir，具体代码如下：代码如下:$dir=&amp;quot;./caxa/&amp;quot;; $file=scandir($dir); print_r($file);稍微复杂点的，来自于php手册：代码如下:$dir = &amp;quot;/etc/php5/&amp;quot;; // Open a known directory, and proceed to read its contents @camnpr if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { echo &amp;quot;filename: $file : filetype: &amp;quot; . filetype($dir . $file) . &amp;quot;\n&amp;quot;; } closedir($dh); } }这些都只能读取当前指定目录下的文件，对子目录中的文件则无法读取。原来自己写过一个循环删除所有目录的一段代码，需要逐个子目录删除所有文件，包括多层。但是只需要读出文件名，稍微复杂点，网上找到一个能用,原始代码有错误提示，改了一下引用&amp;amp;$data的地方，如下所示：代码如下:function searchDir($path,&amp;amp;$data){ if(is_dir($path)){ $dp=dir($path); while($file=$dp-&amp;gt;read()){ if($file!='.'&amp;amp;&amp;amp; $file!='..'){ searchDir($path.'/'.$file,$data); } } $dp-&amp;gt;close(); } if(is_file($path)){ $data[]=$path; } }function getDir($dir){ $data=array(); searchDir($dir,$data); return   $data; }print_r(getDir('.'));<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1918&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1918&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1918&amp;Page=1">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=1918">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=1918">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>