note 104809 modified in function.copy by danbrown
| From: | danbrown@php.net | Date: | Fri, 08 Jul 2011 15:09:49 +0000 |
| Subject: | note 104809 modified in function.copy by danbrown | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-181356@lists.php.net to get a copy of this message | ||
I had to copy a directory but the top level folder name would be different at dest i.e.
dirparent/dirchild -> diff/dirchild . I thought I would just copy and rename the destination but
you can't rename non empty directories. I wrote this function to work around this:
<?php
function RecursiveCopy($source, $dest, $diffDir = ''){
$sourceHandle = opendir($source);
if(!$diffDir)
$diffDir = $source;
mkdir($dest . '/' . $diffDir);
while($res = readdir($sourceHandle)){
if($res == '.' || $res == '..')
continue;
if(is_dir($source . '/' . $res)){
RecursiveCopy($source . '/' . $res, $dest, $diffDir . '/' . $res);
} else {
copy($source . '/' . $res, $dest . '/' . $diffDir . '/' .
$res);
}
}
}
?>
--was--
I had to copy a directory but the top level folder name would be different at dest i.e.
dirparent/dirchild -> diff/dirchild . I thought I would just copy and rename the destination but
you can't rename non empty directories. I wrote this function to work around this:
function RecursiveCopy($source, $dest, $diffDir = ''){
$sourceHandle = opendir($source);
if(!$diffDir)
$diffDir = $source;
mkdir($dest . '/' . $diffDir);
while($res = readdir($sourceHandle)){
if($res == '.' || $res == '..')
continue;
if(is_dir($source . '/' . $res)){
RecursiveCopy($source . '/' . $res, $dest, $diffDir . '/' . $res);
} else {
copy($source . '/' . $res, $dest . '/' . $diffDir . '/' .
$res);
}
}
}
http://php.net/manual/en/function.copy.php