ホームページ  >  記事  >  バックエンド開発  >  PHPカスタム関数rrmdirはディレクトリとディレクトリ配下のファイルを再帰的に削除します

PHPカスタム関数rrmdirはディレクトリとディレクトリ配下のファイルを再帰的に削除します

WBOY
WBOYオリジナル
2016-07-25 09:13:201213ブラウズ

例、PHP カスタム関数 rrmdir。

  1. //ディレクトリとファイルを再帰的に削除
  2. function rrmdir($dir) {
  3. if (is_dir($dir)) {
  4. $objects = scandir($dir)
  5. foreach ($objects as $object); {
  6. if ($object != “.” && $object != “..”) {
  7. if (filetype($dir.”/”.$object) == “dir”) rrmdir($dir.”/ ”.$object); else unlink($dir.”/”.$object);
  8. }
  9. }
  10. reset($objects)
  11. }
コードをコピーします
rmdir (PHP4、PHP5) rmdir — ディレクトリを削除する バグを報告する bool rmdir (文字列 $dirname ) dirname で指定されたディレクトリの削除を試みます。 ディレクトリは空である必要があり、適切な権限が必要です。成功した場合は TRUE を返し、失敗した場合は FALSE を返します。 注: PHP 5.0.0 以降、rmdir() は特定の URL ラッピング プロトコルでも使用できます。 rmdir() がどの URL ラッピング プロトコルをサポートしているかを確認するには、サポートされているプロトコルとラッパーのリストを参照してください。 注: Context のサポートは PHP 5.0.0 で追加されました。コンテキストの説明については、「Stream 関数」を参照してください。 注: セーフ モードが有効になっている場合、PHP はスクリプトの実行時に、スクリプト化されているディレクトリの UID (所有者) が実行中のスクリプトと同じかどうかを確認します。 mkdir() と unlink() を参照してください。 例:

  1. function rrmdir($dir) {
  2. if (is_dir($dir)) {
  3. $objects = scandir($dir)
  4. foreach ($objects as $object) {
  5. if ($object != "." && $object != "..") {
  6. if (filetype($dir."/".$object) == "dir") rrmdir($dir."/".$ object); else unlink($dir."/".$object);
  7. }
  8. }
  9. rmdir($dir)
  10. }
  11. ?>
  12. ;
これは私のコードではありませんが、見つけるのに時間がかかったので共有しようと思いました。これは、フォルダー、すべてのサブフォルダー、およびファイルを一度に削除する機能です。 この関数が実行されるページに関連して、削除したいディレクトリを指定します。次に、フォルダーを空にするだけで、削除しない場合は $empty = true を設定し、$empty = false を設定する場合はそのままにしておきます。それを削除すると、指定されたディレクトリも削除されます。
例:

function deleteAll($directory, $empty = false) {
if(substr($directory,-1) == "/") {
    $directory = substr($directory, 0,-1);
  1. }
  2. if(!file_exists($directory) || !is_dir($directory)) {
  3. return false;
  4. } elseif(!is_readable($directory)) {
  5. return false; {
  6. $directoryHandle = opendir($directory);
  7. while ($contents = readdir($directoryHandle)) {
  8. if($contents != '.' && $contents != '..') {
  9. $path = $ディレクトリ . "/" . $contents;
  10. if(is_dir($path)) {
  11. unlink($path); // bbs.it-home.org
  12. }
  13. }
  14. closedir($directoryHandle);
  15. if($empty == false) {
  16. if(!rmdir($directory)) {
  17. return false;
  18. }
  19. }
  20. ?>
  21. コードをコピー
  22. 削除権限が設定されていることを確認するために前のスクリプトにパッチを適用します。 例:
  23. //フォルダーの削除関数
//ディレクトリとファイルを再帰的に削除 function deleteDirectory($dir) { if (!file_exists($dir)) return true if (!is_dir; ($dir) || is_link($dir)) return unlink($dir);

foreach (scandir($dir) as $item) {

if ($item == '.' || $item == '. .') 続行;
if (!deleteDirectory($dir . "/" . $item)) {
chmod($dir . "/" . $item, 0777); " . $item)) return false;
    };
  1. }
  2. return rmdir($dir);
  3. }
  4. ?>
  5. コードをコピー
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。