2012-10-21 117 views
2

我有10個主文件夾包含一些子文件夾。我想創建一個遍歷主文件夾(每個10)的循環,併爲每個文件夾創建標籤。讀取目錄文件功能

我是一名PHP初學者,我設法創建一個讀取目錄的程序,並創建鏈接。但....代碼是在每個目錄相同的代碼,我不想複製相同的文件10倍,所以如果我想改變一些事情,這將是一個頭痛的問題... 我無法設法創建適當的功能。

可以somone請幫我嗎?

<?php 

$dir = "."; 
$handle = opendir($dir); 
$entry = readdir($handle); 
$foldername=basename(getcwd()); 

if ($handle = opendir($dir)) { 
    while (false !== ($entry = readdir($handle))) { 
     if ($entry != "." && $entry != "..") { 
      if (is_dir($entry) === true){   
       $foldername=basename($entry);           
       echo "<a class='directory' href='http://the_link/".$entry."'> ".$foldername." </a>"; 
      }     
     } 
    } 
    closedir($handle); 
}   
?> 

回答

4

最簡單的方法是使用RecursiveDirectoryIterator

用例:

$ite = new RecursiveDirectoryIterator("../"); 
foreach ($ite as $file) { 
    echo $file . "\n"; 
} 

在你的情況,你可以使用:

$dir = "."; 
$ite = new RecursiveDirectoryIterator($dir); 
foreach ($ite as $entry) { 
    if (is_dir($entry)) { 
    $foldername = basename($entry); 
    echo "<a class='directory' href='http://the_link/".$entry."'> ".$foldername." </a>"; 
} 

或函數中:

function displayDir($dir) { 
    $ite = new RecursiveDirectoryIterator($dir); 
    foreach ($ite as $entry) { 
    if (is_dir($entry)) { 
     $foldername = basename($entry); 
     echo "<a class='directory' href='http://the_link/".$entry."'> ".$foldername." </a>"; 
    } 
} 

查看documentation瞭解更多詳情。

+1

+1使用RecursiveDirectoryIterator:[手冊頁](http://php.net/manual/en/class.recursivedirectoryiterator.php) – migg

+0

感謝您。我可以把它放在一個函數中,並保存在一個文件中,並在每個目錄中放入一個包含函數的php文件到這個文件中?當然是 – shirlyka

+0

!只需創建一個函數,其中'$ dir'是您的參數。 –

0

請試試這個:

<?php 

    getDirectoryList("your directory path"); 

    function getDirectoryList ($directory) 
    { 
    $results = array(); 
    $handler = opendir($directory); 

    while ($file = readdir($handler)) {  
     if ($file != "." && $file != "..") { 
     $results[] = $file; 
     } 
    } 
    closedir($handler); 

    return $results; 

    } 

?> 
0

對於掃描文件夾,子文件:

function scan_folder($from_folder = '/your/default/path/') { 

     if ($handle = @opendir ($from_folder)) { 

       while ($file = readdir ($handle)) { 
         if (is_file ($from_folder . $file)) {  

          echo $from_folder . $file; 

         } else if ((is_dir ($from_folder . $file)) && ($file != '.') && ($file != '..')) { 
           echo $from_folder . $file; 
         } 
       } 

       closedir ($handle); 
     } 

} 

用途:用於

scan_folder('/your/path/to/scan/'); 

功能: