3

フォルダ内のすべてのディレクトリとサブディレクトリを順序付けられていないリストとして一覧表示したいと思います。
正しいリストを作成する以下のコードを見つけました。しかし、私は2つのことで助けが必要です:

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

listFolderFiles('../targetfolder');

?>


すべてのディレクトリ名は、次のように見出しとして表示されます。

<li> <h2> directory name </h2> <li> 

およびサブディレクトリ名は、次のようになります。

<li> <h3> sub directory name </h3> </li>


ターゲットディレクトリ内には、2つのメインディレクトリがあります。それらの名前はリストに表示されるべきではありません-

私はphpの経験が非常に限られています:)どんな助けでも大歓迎です!

4

3 に答える 3

3

これを試して

function listFolderFiles($dir){
  static $level = 0;
  $level++;
  $ffs = scandir($dir);
  echo '<ul>';
  foreach($ffs as $ff){
    if($ff != '.' && $ff != '..'){
      echo '<li>';
      if(is_dir($dir.'/'.$ff)) {
        $h_start = ($level == 1) ? '<h2>' : '<h3>';
        $h_close = ($level == 1) ? '</h2>' : '</h3>';
        echo $h_start.$ff.$h_close;
        listFolderFiles($dir.'/'.$ff);
      } else {
        echo $ff;
      }
      echo '</li>';
    }
  }
  echo '</ul>';
  $level--;
}
于 2012-09-29T10:23:35.810 に答える
0

これは非常にシンプルでハッキング可能なソリューションです:

function dir2ul($path,$title,$n){
    if(!is_dir($path))return "<a href=\"$path\">$title</a>";
    $html="";
    foreach(preg_grep('/^([^.])/', scandir($path)) as $file)
        $html.='<li>'.dir2ul($path.'/'.$file,$file,$n+1).'</li>';
    return "<h$n>$title</h$n><ul>$html</ul>";
}
echo dir2ul('page','',1);
于 2014-09-21T18:55:46.587 に答える
0
function listFolderFiles($dir){
    $ffs = scandir($dir);
    echo '<ul>';
    foreach($ffs as $ff){
        if($ff != '.' && $ff != '..'){
            echo '<li>'.$ff;
            if(is_dir($dir.'/'.$ff)) {
                echo '<h3>' . $ff . '</h3>';
                listFolderFiles($dir.'/'.$ff);
            }
            echo '</li>';
        }
    }
    echo '</ul>';
}

echo '<h2>folder</h2>';
listFolderFiles('folder');
于 2012-09-29T10:25:43.873 に答える