在php中mkdir函數是建立目錄它自身是不可以遞迴建立目錄了,我們需要遍曆進行目錄然後調用mkdir即可,下面來看一下操作方法。
例
| 代碼如下 |
複製代碼 |
/** * Makes directory and returns BOOL(TRUE) if exists OR made. * * @param $path Path name * @return bool */ function rmkdir($path, $mode = 0755) { $path = rtrim(preg_replace(array("/\\/", "//{2,}/"), "/", $path), "/"); $e = explode("/", ltrim($path, "/")); if(substr($path, 0, 1) == "/") { $e[0] = "/".$e[0]; } $c = count($e); $cp = $e[0]; for($i = 1; $i < $c; $i++) { if(!is_dir($cp) && !@mkdir($cp, $mode)) { return false; } $cp .= "/".$e[$i]; } return @mkdir($path, $mode); } ?> |
例2
Somehow the recursive version of mkdir didn't work for me on Mac and the workaraounds listed
below alsow didn't work for me, so heres my solution:
| 代碼如下 |
複製代碼 |
function mkdir_r($dirName, $rights=0777){ $dirs = explode('/', $dirName); $dir=''; foreach ($dirs as $part) { $dir.=$part.'/'; if (!is_dir($dir) && strlen($dir)>0) mkdir($dir, $rights); } } ?> Tested and works ;) |
例3
| 代碼如下 |
複製代碼 |
function mkdirs($dir) { if(!is_dir($dir)) { if(!mkdirs(dirname($dir))){ return false; } if(!mkdir($dir,0777)){ return false; } } return true; } function rmdirs($dir) { $d = dir($dir); while (false !== ($child = $d->read())){ if($child != '.' && $child != '..'){ if(is_dir($dir.'/'.$child)) rmdirs($dir.'/'.$child); else unlink($dir.'/'.$child); } } $d->close(); rmdir($dir); } |
三個建立目錄的函數都有自己的優點,這裡我也沒有一個個測試了,只使用了第二個感覺非常的不錯。
http://www.bkjia.com/PHPjc/633126.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/633126.htmlTechArticle在php中mkdir函數是建立目錄它自身是不可以遞迴建立目錄了,我們需要遍曆進行目錄然後調用mkdir即可,下面來看一下操作方法。 例 代碼如...