Hello,
Guten Tag: nachdem ich unbedingt einen entsprechenden Verzeichnisbaum für eine Website benötigt habe im Netz aber nichts Ansprechendes zu finden war, hab' ich auf die schnelle etwas geschrieben.
Wenn mich die Motivation packt gibt's ggf. noch einen Artikel der das ganze nochmal etwas beschreibt - z.B. wie man das Ding einfach erweitern kann.
gefällt mir schon ganz dolle :-)
Hast leider nur noch einen gefährlichen Denkfehler im PHP-Teil drin:
function get\_tree($dir = './') {
$tree['dir'] = array();
$tree['file'] = array();
$handle = @opendir($dir);
while(($file = @readdir($handle)) !== false) {
if ($file != '.' && $file != '..') {
$dir = preg\_replace('/^(.\*)\/+$/', '$1', $dir);
$name = $file;
$path = $dir . '/' . $file;
if (is\_dir($path)) {
$tree['dir'][] = array(
'name' => $name,
'type' => 'dir',
'path' => $path,
'data' => get\_tree($path)
);
} else if (is\_file($path)) {
$tree['file'][] = array(
'name' => $name,
'type' => fileinfo($path),
'path' => $path
);
}
}
}
sort($tree['dir']);
sort($tree['file']);
return array\_merge($tree['dir'], $tree['file']);
}
Diese Funktion ist nicht linkfest. Das bedeutet, dass sie sich aufhängen wird, wenn ein Verzeichnislink auf eine höhere Verzeichnisebene verweist.
Dies solltest Du auf jeden Fall korrigieren.
1. Möglichkeit: Linkverfolgung unterdrücken
2. Möglichkeit: Mit Sammelarray und Realpath() arbeiten und den (aufgelösten)
Link nur dann verfolgen, wenn er nicht schon im Sammelarray enthalten ist.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg