php中mkdir函数递归创建目录(文件夹)

在php中mkdir函数是创建目录它自身是不可以递归创建目录了,我们需要遍历进行目录然后调用mkdir即可,下面来看一下操作方法,实例代码如下:

  1. <?php
  2. /**
  3. * Makes directory and returns BOOL(TRUE) if exists OR made.
  4. *
  5. * @param $path Path name
  6. * @return bool
  7. */
  8. function rmkdir($path, $mode = 0755) {
  9. $path = rtrim(preg_replace(array("/\\/", "//{2,}/"), "/", $path), "/");
  10. $e = explode("/", ltrim($path, "/"));
  11. if(substr($path, 0, 1) == "/") {
  12. $e[0] = "/".$e[0];
  13. }
  14. $c = count($e);
  15. $cp = $e[0];
  16. for($i = 1; $i < $c; $i++) {
  17. if(!is_dir($cp) && !@mkdir($cp, $mode)) {
  18. return false;
  19. }
  20. $cp .= "/".$e[$i];
  21. }
  22. return @mkdir($path, $mode);
  23. }
  24. ?>

实例2代码如下:

  1. <?php
  2. function mkdir_r($dirName, $rights=0777){
  3. $dirs = explode('/', $dirName);
  4. $dir='';
  5. foreach ($dirs as $part) {
  6. $dir.=$part.'/';
  7. if (!is_dir($dir) && strlen($dir)>0)
  8. mkdir($dir, $rights);
  9. }
  10. }
  11. ?>

实例3代码如下:

  1. function mkdirs($dir)
  2. {
  3. if(!is_dir($dir))
  4. {
  5. if(!mkdirs(dirname($dir))){
  6. return false;
  7. }
  8. if(!mkdir($dir,0777)){
  9. return false;
  10. }
  11. }
  12. return true;
  13. }
  14. function rmdirs($dir)
  15. {
  16. $d = dir($dir);
  17. while (false !== ($child = $d->read())){
  18. if($child != '.' && $child != '..'){
  19. if(is_dir($dir.'/'.$child))
  20. rmdirs($dir.'/'.$child);
  21. else unlink($dir.'/'.$child);
  22. }
  23. }
  24. $d->close();
  25. rmdir($dir);
  26. }

三个创建目录的函数都有自己的优点,这里我也没有一个个测试了,只使用了第二个感觉非常的不错。