我也不太清楚有没有。不过可以自己写一个函数实现。function _mkdir($dir)
{
if($dir=="") return;
if(@mkdir($dir)==false)
{
if($parent=preg_replace("/^(.*?)\/[^\/]+$/","$1",$dir))
{
_mkdir($parent);
mkdir($dir);
}
}
}

解决方案 »

  1.   

    哦。上面那个有问题。改一下function _mkdir($dir)
    {
    if($dir=="") return;
    if(@mkdir($dir)==false)
    {
    if(preg_match("/^(.+?)\/[^\/]+$/",$dir,$parent))
    {
    _mkdir($parent[1]);
    mkdir($dir);
    }
    }
    }
      

  2.   

    就是一次创建多层的目录。有点像楼上的意思,我试试。比如:我要创建 
    /html/12/123 这个目录
    但 
    只有
    /html 是存在的。
    我要先在 /html 下创建 12 目录
    再在 /html/12 下创建 123 目录
      

  3.   

    还是有问题 /html/12/123可以创建,但/html/12/123/不行,所以再改……function _mkdir($dir)
    {
    if($dir=="") return;
    if(@mkdir($dir)==false)
    {
    if(preg_match("/^(.+?)\/[^\/]*$/",$dir,$parent))
    {
    _mkdir($parent[1]);
    mkdir($dir);
    }
    }
    }
      

  4.   

    `mkdir -p /html/12/123/1234/12345/1234567`
      

  5.   

    `mkdir -p /html/12/123/1234/12345/1234567`
    ----------------
    我在 Windows 系统
      

  6.   

    Gdj(陈水.智商只有129.非卖品) 的方法好像不行。我自己写了一个
    function MakeDir($dir) {
        if (file_exists($dir)) return;
        // 分解成两个部分
        $dir = str_replace('\\','/',$dir);
        $p = strrpos($dir, '/');
        $parent = substr($dir,0,$p);
        //$d = substr($f,$p-strlen($f)+1);    if (file_exists($parent)) {
            mkdir($dir,0777);
        }
        else {
            MakeDir($parent);
            mkdir($dir,0777);
        }}
      

  7.   

    测试好了。$f = "c:/12/12/344/343/32/343/343/43/43";用这样就可以这样就不行。
    $f = "c:\\12\\212\\212\\212\\21\\21\212\\32";
    明白加一个就OK了。 $dir = str_replace('\\','/',$dir);
      

  8.   

    是我忘我说是用 Window 系统了。
      

  9.   

    在php里window系统也可以用c:/1这种写法的吧?
      

  10.   

    在php里window系统也可以用c:/1这种写法的吧?
    ----------
    是。因为我是用 dirname() 来得到的路径。在 windows 下默为 C:\ 这样的格式。
    我没有替换,所以有了这个问题。多谢了哈。