Tom: Verzeichnisse und Unterverzeichnisse listen, Beispiellösung?

Beitrag lesen

Hello,

zumindest für das Zusammensammeln der Verzeichnisse unter Vermneidung eines zyklischen Verlaufes (hoffe ich jedenfalls) habe ich eine Lösung gebastelt.
Ich habe mich bemüht, das globale Scope nicht zu beschmutzen.

Dies ist übrigens ein Anwendungsfall für das gute alte Pärchen list() + each()

Das Ergebnis der Liste braucht man dann nur noch einmal durchzuarbeiten, um zu den Verzeichnissen auch die Dateien zu finden.

<?php   ### glob_all_dirs.php ###

#---------------------------------------------------------

function append_dirs(&$_list,$start_folder)
{
  ## Directory-Liste des Unterverzeichnisses bschaffen

$_entries = glob($start_folder.'/*', GLOB_ONLYDIR);

## beschaffte Liste abarbeiten und übergeben

foreach ($_entries as $key => $symbolic)
  {
     ## Symbolische und relative Angaben auflösen
     $realpath = realpath($symbolic);

## Hinten anhängen an Sammelliste, wenn noch nicht
     ## darin enthalten
     if (!in_array($realpath, $_list))
     {
       $_list[] = $realpath;
     }
  }
}

#---------------------------------------------------------

function get_subdirs($start_folder)
{
  $_list = array();
  $_list[] = $start_folder;

while (list($key, $dir) = each($_list))
  {
    append_dirs($_list, rtrim($dir,'/'));
  }

natsort($_list);
  return $_list;
}

#---------------------------------------------------------

$start_folder = "/home/thomas/web/php4";

echo "<pre>\n";
echo htmlspecialchars(print_r(get_subdirs($start_folder),1));
echo "</pre>\n";

?>

Ihr könnt die Lösung ja mal (zer-)diskutieren ;-)

Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)