最初の方法: コードをコピーします コードは次のとおりです: /*** ディレクトリ生成クラス: UtilsMakeDir * @author yepeng * @since 2010.3.18 */ class UtilsMakeDir{ //このディレクトリは、ベースディレクトリが作成されます。これは既存のディレクトリである必要があります private static $makeBasePath = 'video'; /*** ディレクトリを再帰的に作成します。 * 作成が成功した場合はフルパスを返します。 * 作成が失敗した場合は false を返します。 * @param String $pathString パス文字列 ('2/3/4/5' など) * @ false または文字列を返します public static function makeDir($pathString){ $pathArray =explode('/',$pathString); if(empty($pathArray[0])){ return false;パス = array_shift($pathArray ); self::$basePath = self::$basePath.'/'.$path; if(is_dir(self::$basePath)){ $path = implode('/' ,$pathArray); self::makeDir($path); else{ @mkdir(self::$basePath,0777); $path('/',$pathArray); :makeDir($path) ; if(is_dir(self::$basePath)){ return self::$basePath; else{ return false;*/ public static function makeDir ($pathString){ $pathArray =explode('/',$pathString); $tmpPath = array_shift($pathArray); foreach ($pathArray as $val){ $tmpPath .= "/".$ val ; if(is_dir($tmpPath)){ 続行; } else { @mkdir($tmpPath)){ return $tmpPath } else{ return false; } } /*** ベース ディレクトリを含むディレクトリを作成します。たとえば、画像を video の下に配置する場合 (video は既存のディレクトリです)、渡すパラメータは video/2/3/4 である必要があります *成功した場合、フルパスが返されます * Create Return false 失敗した場合 * @param String $pathString 'video/2/3/4/5' などのパス文字列 * @return false または string **/ パブリック静的関数 delDir($stringPath){ if(!$handle = @opendir($stringPath)){ return false; while (false !==($file = readdir($handle))){ if($file !='.' && $file != '..'){ $tmpdir = $stringPath."/ " .$file; if(is_dir($tmpdir)){ self::delDir($tmpdir); } if(is_file($tmpdir)){ unlink($tmpdir) ; } } } closedir($handle); }} ?> ループ + 再帰、php ファイルが gb2312 としてエンコードされ、ファイル名が任意である限り、成功しました。ファイル名を変更する必要があります エンコーディングが gb2312 の場合は、 コードをコピーするだけです コードは次のとおりです: deltree('./copy copy copy copy copy copy aaa' ); function deltree($pathdir) { //echo $pathdir.'';//デバッグ時に使用します if(is_empty_dir($pathdir))//空の場合 { rmdir($pathdir);// 直接削除します } else {//それ以外の場合は、 ..$d=dir($pathdir) を除き、 while($a=$d-> ;read()) //次は $pathdir の下のみ削除 { if(is_file($pathdir.'/'.$a) && ($a!='.') && ($a!='..' )) { unlink($pathdir .'/'.$a); //ファイルの場合は直接削除}elseif(is_dir($pathdir.'/'.$a) && ($a! ='.') && ($a!=' ..')) //ディレクトリかどうか{ if(!is_empty_dir($pathdir.'/'.$a))//空かどうか { deltree($pathdir.'/'.$a); //そうでない場合は、それ自体を呼び出します}else { rmdir($pathdir.'/'.$a); //それが空の場合、それを削除します直接} } } $d->close(); //echo "最初にディレクトリ内のすべてのファイルを削除する必要があります";//デバッグ時に使用したもの rmdir($pathdir); } function is_empty_dir($pathdir) { //ディレクトリが空かどうかを判断する、私の方法は非常に優れていますね? . と .. 以外にも空ではないものがあります $d=opendir($pathdir) ; $i=0; while($a=readdir($d)) } closedir($d); if($i>2){return false;} true; } ?> 2 番目の再帰メソッドは winxp で実行されます。php ファイルが gb2312 としてエンコードされ、ファイル名が任意である限り、テストは成功します。テストは必要ありませんコードをコピーします コードは次のとおりです: header("Content-Type:text/html; charset=gb2312"); if(deleteDir('./ copy copy copy copy copy copy copy copy copy aaa')) echo "正常に削除されました"; function deleteDir($dir) { if (@rmdir($dir)==false && is_dir($dir)) //削除できません。すべてのファイルを削除するには Enter を押してください{ if ($dp = opendir ($dir)) { while (($file=readdir($dp)) != false) { if($file!='.' && $file!='..') { / / echo $file=$dir.'/'.$file;echo ''; $file=$dir.'/'.$file if (is_dir($file)) //はい 実ディレクトリ { deleteDir($file); }else { unlink($file); closedir($dp); return false; if (is_dir($dir) && @rmdir($dir)==false) //ディレクトリは削除できませんreturn true; ?> 3 番目の再帰メソッドは次のようにテストされました。 winxp では、ディレクトリ ファイルを一覧表示するのに非常に便利です コードをコピーします コードは次のとおりです: function listDir($dir) { static $break=0; $break++==100 ) exit;//深さレベルの数を制御しますstatic $i=-0; if(is_dir($dir))//Directory{ if ($dh = opendir($dir)) //{ while (($file = readdir($dh)) !== false) { if((is_dir($dir."/".$file)) && $file!="." を開きます。 && $file!=". .")//Directory{ $j=$i;while($j--) echo "------" echo " ディレクトリ名: ".$dir."/".$file.""; $i++; listDir( $dir."/". $file); $i--; else { if($file!="." && $file!="..") { $j=$ i;while($j- -) echo "------"; $ext=trim(extend($file)); //if($ext=='jpg') echo $dir .'/'.$file .""; } } } closedir($dh) } } } function extend($file_name) { $retval=""; $pt=strrpos($ ファイル名, "."); if ($pt) $retval=substr($file_name, $pt+1, strlen($file_name) - $pt); } //実行を開始します listDir(".") ; http://www.bkjia.com/PHPjc/325352.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/325352.html技術記事最初の方法: 次のようにコードをコピーします: ?php /*** ディレクトリ生成クラス: UtilsMakeDir * @author yepeng * @since 2010.3.18*/ class UtilsMakeDir{ //ディレクトリの作成時にベース ディレクトリは使用されません...