用PHP实现遍历删除目录及此目录下存放的所有文件

本篇文章主要讲述的是使用PHP遍历一个目录下的所有目录及文件,并删除该目录及其目录下的所有子目录和文件,本次代码通过递归的方式来实现,感兴趣的朋友来了解一下吧。

用到的函数:

scandir($path) 遍历一个目录下所有文件并返回数组。

unlink($filename) 删除文件。

rmdir($path) 只删除空文件夹。

PHP代码:

  1. /**
  2. * 删除当前目录及其目录下的所有目录和文件
  3. * @param string $path 待删除的目录
  4. * @note $path路径结尾不要有斜杠/(例如:正确[$path='./static/image'],错误[$path='./static/image/'])
  5. */
  6. function deleteDir($path) {
  7. if (is_dir($path)) {
  8. //扫描一个目录内的所有目录和文件并返回数组
  9. $dirs = scandir($path);
  10. foreach ($dirs as $dir) {
  11. //排除目录中的当前目录(.)和上一级目录(..)
  12. if ($dir != '.' && $dir != '..') {
  13. //如果是目录则递归子目录,继续操作
  14. $sonDir = $path.'/'.$dir;
  15. if (is_dir($sonDir)) {
  16. //递归删除
  17. deleteDir($sonDir);
  18. //目录内的子目录和文件删除后删除空目录
  19. @rmdir($sonDir);
  20. } else {
  21. //如果是文件直接删除
  22. @unlink($sonDir);
  23. }
  24. }
  25. //phpfensi.com
  26. }
  27. @rmdir($path);
  28. }
  29. }