2

我有 10 个包含一些子文件夹的主文件夹。我想创建一个循环,遍历主文件夹(10 个文件夹中的每个文件夹)并为每个文件夹创建标签。

我是 php 的初学者,我设法创建了一个程序来读取目录并创建链接。但是....每个目录中的代码都是相同的代码,我不想复制同一个文件 10 次,所以如果我想更改某些内容会很头疼...我无法创建正确的为此发挥作用。

有人能帮帮我吗?

<?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

3 回答 3

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>";
  }
}

有关更多详细信息,请参阅文档

于 2012-10-21T07:19:58.157 回答
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;

  }

?>
于 2012-10-21T07:26:01.390 回答
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/');

使用的功能:

于 2012-10-21T08:09:20.973 回答