<p> 1。递规法: //没测试</p><code>deleteDir($dir)<br />{<br />if (rmdir($dir)==false && is_dir($dir)) {<br /> if ($dp = opendir($dir)) {<br /> while (($file=readdir($dp)) != false) {<br /> if (is_dir($file) && $file!='.' && $file!='..') {<br /> deleteDir($file);<br /> } else {<br /> unlink($file);<br /> }<br /> }<br /> closedir($dp);<br /> } else {<br /> exit('Not permission');<br /> }<br />}<br />}</code><p> 2。系统调用法</p><code>function del_dir($dir)<br />{<br />if(strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {<br /> $str = "rmdir /s/q " . $dir;<br />} else {<br /> $str = "rm -Rf " . $dir;<br />}<br />}</code><p> 3。循环法 from webjx.com</p><code>function deltree($pathdir)<br />{<br />echo $pathdir;//我调试时用的<br />if(is_empty_dir($pathdir))//如果是空的<br /> {<br /> rmdir($pathdir);//直接删除<br /> }<br /> else<br /> {//否则读这个目录,除了.和..外<br /> $d=dir($pathdir);<br /> while($a=$d->read())<br /> {<br /> if(is_file($pathdir.'/'.$a) && ($a!='.') && ($a!='..')){unlink($pathdir.'/'.$a);}<br /> //如果是文件就直接删除<br /> if(is_dir($pathdir.'/'.$a) && ($a!='.') && ($a!='..'))<br /> {//如果是目录<br /> if(!is_empty_dir($pathdir.'/'.$a))//是否为空<br /> {//如果不是,调用自身,不过是原来的路径+他下级的目录名<br /> deltree($pathdir.'/'.$a);<br /> }<br /> if(is_empty_dir($pathdir.'/'.$a))<br /> {//如果是空就直接删除<br /> rmdir($pathdir.'/'.$a);<br /> }<br /> }<br /> }<br /> $d->close(); <br /> echo "必须先删除目录下的所有文件";//我调试时用的<br /> }<br />}<br />function is_empty_dir($pathdir)<br />{<br />//判断目录是否为空,我的方法不是很好吧?只是看除了.和..之外有其他东西不是为空<br />$d=opendir($pathdir);<br />$i=0;<br /> while($a=readdir($d))<br /> {<br /> $i++;<br /> }<br />closedir($d);<br />if($i>2){return false;}<br />else return true;<br />}</code></p>