13. marts 2005 - 17:24
Der er
6 kommentarer og
1 løsning
En opendir() som viser underdirs+filer
Hej
Jeg er doven, (vrøvl, har ikke så meget tid, (+ det løse)), og mangler en funktion som læser et dir, viser filnavne ud fra navn, sort(filnavn), og derefter viser underdirs/filnavne, hvis der er nogen. (stadig sorteret efter navn)
Har lige brugt tid på at finde ud af at læse et dir igennem for filer og underdirs. Men der er ikke noget som lykkes helt!
Antallet af underdirs er jo ukendt.
Illustration:
"startdir" som læses igennem, er defineret som en absolut sti, f.eks.
$path = "c:/dirnavn/";
//Først vises filer i "$path":
filnavn_1
filnavn_2
// Derefter underdirs til "$path":
underdir_1: (underdir til "$path")
fil_1
fil_2
underdir_2: (underdir til "$path")
fil_1
sub_under_dir (underdir til "$path"/underdir_2/"):
fil_1
fil_2
Det er væsentligt at filer og dirnavne sorteres efter navn og at filer vises først, derefter evt. under dirs!!!
13. marts 2005 - 17:36
#2
Måske i den her stil:
<?
$mappe = "c:/dirnavn";
$liste = array($mappe);
visMapper($mappe, $liste);
sort($liste);
foreach ($liste as $sti) {
echo "<p><b>$sti:</b></p>";
$filer = visFiler($sti);
if (is_array($filer)) {
sort($filer);
echo "<p>";
foreach ($filer as $fil) {
echo "$fil<br />";
}
echo "</p>";
}
}
function visFiler($dir) {
$d = dir($dir);
while (false !== ($file = $d->read())) {
if (is_file("$dir/$file")) {
$out[] = $file;
}
}
$d->close();
return $out;
}
function visMapper($dir, &$out) {
$d = dir($dir);
while (false !== ($file = $d->read())) {
if ($file != '.' && $file != '..') {
if (is_dir("$dir/$file")) {
$out[] = "$dir/$file";
visMapper("$dir/$file", $out);
}
}
}
$d->close();
}
?>
13. marts 2005 - 17:39
#3
'visFiler' skal måske lige tjekke for tom variabel:
function visFiler($dir) {
$d = dir($dir);
while (false !== ($file = $d->read())) {
if (is_file("$dir/$file")) {
$out[] = $file;
}
}
$d->close();
if (!empty($out)) return $out;
}
13. marts 2005 - 17:42
#4
jahh, der var lige en "out" fejl, men:
damn:smid svar!!!