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

在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);

}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值