Lieber Jeena,
- a
- b
-- ba
-- bb
-- bc- c
-- ca
--- caa
--- cab
--- cac
---- caca
---- cacb
---- cacc- d
-- da- e
- f
das sieht mir doch sehr nach einem assoziativen Array aus. Ich habe mir mal die Dateistruktur meines Webspaces in ein solches Array umgewandelt, um es dann als eine <ul> auszugeben (Adminbereich, Explorer-Tree).
Ich werde mal nach dem Script kramen und sehen, ob es etwas für Dich ist.
Diese Funktionen habe ich etwas "gesäubert", da Du ja keinen Dateibaum als Explorer-Tree anzeigen möchtest.
// Funktion zum erstellen einer <ul> aus Dateistruktur
function dateistruktur($verzeichnis_pfad)
{
// Verzeichnisstruktur ermitteln und als Liste darstellen
$alle_dateien = make_tree($verzeichnis_pfad, "all");
$verzeichnis_array = array();
for($i=0;$i<count($alle_dateien);$i++)
{
$alle_dateien[$i] = "html/".substr($alle_dateien[$i], 5); // das "html/" vorne im Pfad entfernen
$alle_dateien[$i] = explode("/", $alle_dateien[$i]);
$temp_array = array();
while(count($alle_dateien[$i]) > 0)
{
$test = array_pop($alle_dateien[$i]);
if(count($temp_array) > 0)
{
$temp_array = array($test => $temp_array);
}
else
{
$temp_array = array($test => "");
}
}
$verzeichnis_array = array_pad($verzeichnis_array, count($verzeichnis_array)+1, $temp_array);
}
$verzeichnisse = array();
foreach($verzeichnis_array as $temp)
{
$verzeichnisse = array_merge_recursive($verzeichnisse, $temp);
}
// Verzeichnisliste zu einer HTML-Liste wandeln
$datei_baum = baum_vorbereiten($verzeichnisse, "/"); // Verzeichnisstruktur als <ul> herstellen
return $datei_baum;
}
// Funktion für die Dateibaum-Liste (rekursive Funktion!)
function baum_vorbereiten($verzeichnisse, $pfad)
{
$tabs = preg_replace("/[^\/]*(\/)[^\/]*/", "\t", $pfad);
$liste = $tabs."<ul>\r\n";
foreach($verzeichnisse as $stamm => $zweig)
{
if($stamm != "0")
{
if(is_array($zweig))
{
$pfad .= $stamm."/";
$liste .= $tabs."\t<li".' class=""><a href="">'.$stamm."</a>\r\n";
$liste .= baum_vorbereiten($zweig, $pfad, $liste);
$pfad = substr($pfad, 0, strlen($pfad) - strlen($stamm)-1);
$liste .= $tabs."\t</li>\r\n";
}
else
{
$liste .= $tabs."\t<li".' class=""><a href="">'."$stamm</a></li>\r\n";
}
}
}
$liste .= $tabs."</ul>\r\n";
return $liste;
}
// Funktion für Verzeichnisbaum
function make_tree($path, $mode)
{
$list = array();
$handle=opendir($path);
while($a=readdir($handle))
{
if(!preg_match('/^\./',$a))
{
$full_path="$path/$a";
switch($mode)
{
case "all": $list[]=$full_path; break;
case "dir": if(is_dir($full_path)) $list[]=$full_path; break;
case "file": if(is_file($full_path)) $list[]=$full_path; break;
}
if(is_dir($full_path))
{
$recursive=make_tree($full_path, $mode);
for($n=0; $n<count($recursive); $n++)
{
$list[]=$recursive[$n];
}
}
}
}
closedir($handle);
return $list;
}
Möge es von Nutzen sein.
Liebe Grüße aus Ellwangen,
Felix Riesterer.