2016-04-27 70 views
0

我接管了這個網站進行管理。前開發者使用opendir(),在獲取文件夾中的文件之前只打開一個級別。我想在最終文件之前創建多級文件夾。我在服務器上創建了子文件夾,但我需要修改代碼以將子文件夾動態識別爲不是文件夾。php動態打開使用open_dir()函數的多級目錄

if ($handle = opendir("parentfolder/".$pageid.'/')) { 
     $list = array(); 
     while (false !== ($file = readdir($handle))) { 
      if ($file != "." && $file != "..") { 
       $list[] = "$file\n"; 
      } 
     } 
     rsort($list); 
     $clength = count($list); 
     for($x = 0; $x <$clength; $x++){ 
      $pubFolders .= "<a href='".$maindomain."/reports/".$list[$x]."' class='imagefolders'><img src='".$maindomain."/images/icons/image.png' alt=''/><br>".$list[$x]."</a>"; 
     } 
     $data = $data.$pubFolders; 
     closedir($handle); 
    } 

回答

0

使用​​3210與GLOB_ONLYDIR;一些示例功能如下:

function findDirectories($rootPath) { 
    $directories = array(); 
    foreach (glob($rootPath . "/*", GLOB_ONLYDIR) as $directory) { 
     $directories[] = $directory; 
    } 
    return $directories; 
} 

function findFiles($rootPath, $extension) { 
    $files = array(); 
    foreach (glob($rootPath . "/*.$extension") as $file) { 
     $files[] = $file; 
    } 
    return $files; 
} 

function findFilesRecursive($rootPath,$extension) { 
    $files = findFiles($rootPath,$extension); 
    $directories = findDirectories($rootPath); 
    if (!empty($directories)) { 
     foreach ($directories as $key=>$directory) { 
      $foundFiles = findFilesRecursive($directory,$extension); 
      foreach ($foundFiles as $foundFile) { 
       $files[] = $foundFile; 
      } 
     } 
    } 
    return $files; 
} 

如果你不關心定義特定的擴展,只是在*通過爲$extension參數。

+0

謝謝大衛。將測試並恢復 – Gyne