首頁  >  文章  >  後端開發  >  php取得某目錄所包含的所有目錄和檔案的實作程式碼

php取得某目錄所包含的所有目錄和檔案的實作程式碼

WBOY
WBOY原創
2016-07-25 08:57:48860瀏覽
  1. /**
  2. * 取得输入目录所包含的所有目录和文件
  3. * 以关联数组形式返回
  4. * edit: bbs.it-home.org
  5. */
  6. function deepScanDir($dir)
  7. {
  8. $fileArr = array();
  9. $dirArr = array();
  10. $dir = rtrim($dir, '//');
  11. if(is_dir($dir)){
  12. $dirHandle = opendir($dir);
  13. while(false !== ($fileName = readdir($dirHandle))){
  14. $subFile = $dir . DIRECTORY_SEPARATOR . $fileName;
  15. if(is_file($subFile)){
  16. $fileArr[] = $subFile;
  17. } elseif (is_dir($subFile) && str_replace('.', '', $fileName)!=''){
  18. $dirArr[] = $subFile;
  19. $arr = deepScanDir($subFile);
  20. $dirArr = array_merge($dirArr, $arr['dir']);
  21. $fileArr = array_merge($fileArr, $arr['file']);
  22. }
  23. }
  24. closedir($dirHandle);
  25. }
  26. return array('dir'=>$dirArr, 'file'=>$fileArr);
  27. }
  28. //示例
  29. $dir = '/var/htdocs/w4/article';
  30. $arr = deepScanDir($dir);
  31. print_r($arr);
  32. /**
  33. * 取得输入目录所包含的所有文件
  34. * 以数组形式返回
  35. * author: flynetcn
  36. */
  37. function get_dir_files($dir)
  38. {
  39. if (is_file($dir)) {
  40. return array($dir);
  41. }
  42. $files = array();
  43. if (is_dir($dir) && ($dir_p = opendir($dir))) {
  44. $ds = DIRECTORY_SEPARATOR;
  45. while (($filename = readdir($dir_p)) !== false) {
  46. if ($filename=='.' || $filename=='..') { continue; }
  47. $filetype = filetype($dir.$ds.$filename);
  48. if ($filetype == 'dir') {
  49. $files = array_merge($files, get_dir_files($dir.$ds.$filename));
  50. } elseif ($filetype == 'file') {
  51. $files[] = $dir.$ds.$filename;
  52. }
  53. }
  54. closedir($dir_p);
  55. }
  56. return $files;
  57. }
复制代码


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn