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

スキャンフォルダとサブフォルダの場合:

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 に答える
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 に答える