2016-04-07 15 views
0

PHPでは、ディレクトリからすべてのファイルを再帰的にコピーしたいので、サブディレクトリはというサブディレクトリを持たない単一のディレクトリにサブディレクトリをコピーします。単一ディレクトリへのPHP再帰コピーディレクトリ

.../DIR/subdir1/file1.pdf

.../DIR/subdir1/file2.pdf

.../DIR/subdir2/file3.pdf

。 ../dir/subdir2/file4.pdf

はなるはずです:

.../newdirが/ file1.pdf

.../NE WDIR/file2.pdf

.../newdirが/ file3.pdf

.../newdirが/ file4.pdf

すなわち。もう "subdir"レベルはありません。

<?php 
$src = "/dir/"; 
$dst = "/newdir/"; 

function recurse_copy($src,$dst) { 
    $dir = opendir($src); 
    @mkdir($dst); 
    while(false !== ($file = readdir($dir))) { 
     if (($file != '.') && ($file != '..')) { 
      if (is_dir($src . '/' . $file)) { 
       recurse_copy($src . '/' . $file,$dst . '/' . $file); 
      } 
      else { 
       copy($src . '/' . $file,$dst . '/' . $file); 
      } 
     } 
    } 
    closedir($dir); 
} 

recurse_copy($src,$dst); 

echo "<H3>Copy Paste completed!</H3>"; //output when done 
?> 

答えて

0

ファイルがディレクトリであるときは、先の引数に間違った値を渡している:私はこのPHPコードを使用しています、それをコピーするすべてのファイルが、望まれていないサブディレクトリを保持さ

。あなたがフラットなディレクトリ構造をしたい場合は、それだけで次のようになります。

recurse_copy($src . '/' . $file, $dst); 

の代わり:

recurse_copy($src . '/' . $file, $dst . '/' . $file); 
関連する問題