ホームページ  >  記事  >  バックエンド開発  >  ディレクトリに含まれるすべてのディレクトリとファイルを取得するための PHP 実装コード

ディレクトリに含まれるすべてのディレクトリとファイルを取得するための PHP 実装コード

WBOY
WBOYオリジナル
2016-07-25 08:57:48859ブラウズ
  1. /**
  2. * 入力ディレクトリに含まれるすべてのディレクトリとファイルを取得します
  3. * 連想配列として返します
  4. * 編集: 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 。 $ファイル名;
  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. * 著者: 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=='..') { 続行;
  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. $files を返します。
  57. }
复制代


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。