📌  相关文章
📜  如何在PHP递归删除目录及其全部内容(文件 + 子目录)?

📅  最后修改于: 2022-05-13 01:54:11.480000             🧑  作者: Mango

如何在PHP递归删除目录及其全部内容(文件 + 子目录)?

在PHP,如果你想删除文件或目录,那么请记住一件事,你不能直接删除文件或目录,有一个条件,即存在一些安全问题,所以最好的方法是你首先必须删除文件中存在的数据或其中存在的子文件或目录。那么只有您才能删除该目录。删除子目录或文件后,使用rmdir函数删除主目录。

PHP删除所有文件的函数:在下面的代码中,首先传递需要删除的目录的路径。它检查需要删除的文件或目录是否实际存在/存在。如果它确实存在,那么它将打开文件检查该文件中是否有内容。如果没有,则使用 rmdir 目录删除该目录。但是,如果目录中存在任何其他文件,则它将使用取消链接函数删除除 .和 .. 文件,这意味着系统文件。删除所有内容后,只需使用 rmdir函数即可完全删除目录。

例子:


  • 删除文件之前:
  • 删除文件后:

描述:

  • 在上面的示例中,删除名为“temp”的文件夹中的所有文件。
  • 使用PHP glob函数列出此目录中的文件。 glob函数基本上是“查找匹配特定模式的路径名”。在这种情况下,使用通配符 *(星号)来选择“temp”文件夹中的所有内容。
  • glob函数返回指定文件夹中的文件名数组。
  • 循环遍历这个数组。
  • 使用 is_file函数检查它是文件而不是父目录或子目录。
  • 最后,使用 unlink函数,它会删除文件(如果PHP具有有效的权限——否则,将抛出 E_WARNING 错误并且该函数将返回一个布尔值 FALSE 值)。

    删除目录中的所有文件和子目录:要删除所有子目录中的所有文件和目录,我们可以使用递归。下面是一个递归PHP函数的示例,该函数删除指定目录中的每个文件和文件夹。



    例子:

    $path) {
                  
                // Call recursive function
                deleteAll($path);
            }
              
            // Remove the directory itself
            return @rmdir($str);
        }
    }
       
    // Function call
    deleteAll('temporary_files'); 
      
    ?>
    

    输出:

    • 删除目录之前:
    • 删除目录后:目录被完全删除。

    该函数检查 $str 变量是否表示文件的路径,然后使用函数unlink 删除该文件。但是,如果 $str 代表一个目录,那么它会在删除每个文件之前获取该目录中所有文件的列表。最后,它使用PHP rmdir函数删除子目录本身。