首页 >php教程 >php手册 >php中mkdir函数递归创建目录(文件夹)

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

WBOY
WBOY原创
2016-05-25 16:53:331131浏览

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

<?php
/**
 * 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:

<?php
function mkdir_r($dirName, $rights = 0777) {
    $dirs = explode(&#39;/&#39;, $dirName);
    $dir = &#39;&#39;;
    foreach ($dirs as $part) {
        $dir.= $part . &#39;/&#39;;
        if (!is_dir($dir) && strlen($dir) > 0) mkdir($dir, $rights);
    }
}
?>

Tested and works ;)


例3

<?php
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 != &#39;.&#39; && $child != &#39;..&#39;) {
            if (is_dir($dir . &#39;/&#39; . $child)) rmdirs($dir . &#39;/&#39; . $child);
            else unlink($dir . &#39;/&#39; . $child);
        }
    }
    $d->close();
    rmdir($dir);
}
?>

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


永久链接:

转载随意!带上文章地址吧。

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn