2013-04-08 87 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

相关问题