读取目录文件功能

时间:2012-10-21 07:16:58

标签: php function dir

我有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);
}           
?>

3 个答案:

答案 0 :(得分: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 :(得分: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;

  }

?>

答案 2 :(得分: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/');

使用的功能: