2013-04-08 85 views
0

我使用下面的代碼來列出一個目錄(稱爲測試)的所有文件夾和所有文件的PHP數組這些文件夾中:目錄和顯示文件的文件夾每個文件夾中

<?php 
function listFolderFiles($dir){ 
$ffs = scandir($dir); 
echo '<ol>'; 
foreach($ffs as $ff){ 
    if($ff != '.' && $ff != '..'){ 
     echo '<li class="title">'.$ff; 
     if(is_dir($dir.'/'.$ff)) listFolderFiles($dir.'/'.$ff); 
     echo '</li>'; 
    } 
} 
echo '</ol>'; 
} 

listFolderFiles('test'); 

?> 

這工作正常,但是我希望能夠鏈接到這些文件夾中的每個文件。任何人都可以告訴我我該怎麼做?

例如我有一個名爲「test」的子目錄「test 1」,「test 2」和「test 3」。在每一個我有一些文件,我想成爲用戶可以點擊顯示該文件的鏈接。因此,當用戶訪問該網站,他們會看到這樣的事情:

測試1: 鏈接1 鏈接2

測試2: 鏈接1個 鏈接2

測試3: 鏈接1 鏈接2

+0

我建議這樣做遞歸。看看['DirectoryIterator' class](http://www.php.net/manual/en/class.directoryiterator.php) – Voitcus 2013-04-08 10:20:29

+0

你可以舉例說明'鏈接到這些文件夾中每個文件'的含義? – Baba 2013-04-08 10:21:20

+0

剛剛添加了一個例子。查看描述 – 2013-04-08 10:24:54

回答

2

只需在您要輸出的LI標記內添加一個html A標記。沿着這些線應該工作:

<?php 
function listFolderFiles($dir){ 
    $ffs = scandir($dir); 
    echo '<ol>'; 
    foreach($ffs as $ff){ 
     if($ff != '.' && $ff != '..'){ 
      echo '<li class="title">'; 
      if(is_dir($dir.'/'.$ff)){ 
       echo $ff; 
       listFolderFiles($dir.'/'.$ff); 
      }else{ 
       echo '<a href="'.$dir.'/'.$ff.'">'.$ff.'</a>'; 
      } 
      echo '</li>'; 
     } 
    } 
    echo '</ol>'; 
} 


listFolderFiles('test'); 

?> 
+0

這很有效很好,但是,它將所有東西變成一個鏈接,包括文件夾名稱。我只想將文件夾中的文件作爲鏈接。所以我需要以某種方式從文件中分離出文件夾名稱。 – 2013-04-08 10:34:27

+0

我做了一個快速和骯髒的編輯,應該做我認爲的詭計。新行只是檢查文件名是否與目錄名相同,因此它可能不適用於所有情況 – cronoklee 2013-04-08 10:36:52

+0

這似乎沒有爲我顯示任何東西。有沒有一種方法只是回顯子目錄名稱,然後將該目錄中的所有文件作爲鏈接回顯? – 2013-04-08 10:41:52

相關問題