Liste mit Verzeichnissen und Dateien als HTML-Liste

NTDY

Erfahrenes Mitglied
Sagen wir ich habe ein Array mit einer Liste von Dateien und Verzeichnissen.
Wie kann ich daraus am besten eine HTML-Liste (<ul>) bauen?

Code:
Classes
Classes/Controller
Classes/Controller/AbstractController.php
Classes/Controller/BlogController.php
Classes/Controller/CommentController.php
Classes/Controller/PostController.php
Classes/Domain
Classes/Domain/Model
Classes/Domain/Model/Administrator.php
Classes/Domain/Model/Blog.php
Classes/Domain/Model/Comment.php
Classes/Domain/Model/Person.php
Classes/Domain/Model/Post.php
Classes/Domain/Model/Tag.php
Classes/Domain/Repository
Classes/Domain/Repository/AdministratorRepository.php
Classes/Domain/Repository/BlogRepository.php
Classes/Domain/Repository/PersonRepository.php
Classes/Domain/Repository/PostRepository.php
Classes/Domain/Service
Classes/Domain/Service/BlogFactory.php
Classes/Domain/Validator
Classes/Domain/Validator/BlogValidator.php
Classes/ViewHelpers
Classes/ViewHelpers/GravatarViewHelper.php
Configuration
Configuration/FlexForms
 
<ul> ausgeben
In einer Schleife pro Eintrag: <li>, Eintrag, und </li> ausgeben
</ul> ausgeben

...
oder versteh ich das Problem nicht ganz?
 
Das Ergebnis sieht seltsam aus. Ich habe einen Gedankenfehler drin.
Es scheint, dass die gesammelten Dateien in ein Verzeichnis später eingefügt werden, also versetzt.
PHP:
function get_files($files){
  $f = '';
  echo "<ul>";
  foreach($files as $key=>$val){
    if(is_file($val)){
      $f .= "<li>$val</li>";
    }else{
    if($f==''){
    }else{
      echo "<li>$val<ul>$f</ul></li>";
    }
  }
}
echo "</ul>";
}
  • /var/www/blog_example/Classes/Domain
    • /var/www/blog_example/Classes/Controller/AbstractController.php
    • /var/www/blog_example/Classes/Controller/BlogController.php
    • /var/www/blog_example/Classes/Controller/CommentController.php
    • /var/www/blog_example/Classes/Controller/PostController.php
  • /var/www/blog_example/Classes/Domain/Model
    • /var/www/blog_example/Classes/Controller/AbstractController.php
    • /var/www/blog_example/Classes/Controller/BlogController.php
    • /var/www/blog_example/Classes/Controller/CommentController.php
    • /var/www/blog_example/Classes/Controller/PostController.php
  • /var/www/blog_example/Classes/Domain/Repository
    • /var/www/blog_example/Classes/Controller/AbstractController.php
    • /var/www/blog_example/Classes/Controller/BlogController.php
 
Zuletzt bearbeitet:
PHP:
function get_files($files){
  $f='';
  $f.="<ul>"; //kein Echo sondern in die Variable rein
  foreach($files as $key=>$val){
    if(is_file($val)){
      $f .= "<li>$val</li>";
    }else{
    if($val!=''){ //nicht $f sondern $val überprüfen und durch das != statt == sparst du das else
      $f.="<li>$val</li>"; //Du hattest die ganzen Dateien hier eingerückt wiedergegeben, waren aber nicht die zu dem davor veröffentlichten Ordner
    }
  }
}
$f.="</ul>"; //hier das selbe wie Zeile 3
return $f;
}

Ist dass das, was du willst?
 
Zurück