Liebe Energie,
ich habe mir einmal das hier gebastelt. Möge es jemanden von Nutzen sein:
<?php
/* Funktion zum Auslesen eines Verzeichnisses
*
* (array) verzeichnis_auslesen( (string) $pfad [,(string) $welche[, (boolean) $rekursiv]] )
* $pfad = Verzeichnispfad relativ zum aufrufenden Script
* $welche = Verzeichnisse und/oder Dateien? ('alle', 'verzeichnisse', 'dateien')
* $rekursiv = Unterverzeichnisse mit auflisten? ( true, false)
*
*/
function verzeichnis_auslesen($pfad, $welche = 'alle', $rekursiv = true)
{
$pfad = preg_replace('~(.*)/$~', '\\1', $pfad); // letzten Slash aus dem String entfernen
$liste = array();
$lesezugriff = opendir($pfad);
while($ein_eintrag = readdir($lesezugriff))
{
switch($welche)
{
case 'dateien':
if (is_file("$pfad/$ein_eintrag"))
$liste[] = $rekursiv ? "$pfad/$ein_eintrag" : $ein_eintrag;
break;
case 'verzeichnisse':
if (is_dir("$pfad/$ein_eintrag") && !preg_match('~^\.\.?$~', $ein_eintrag))
$liste[] = $rekursiv ? "$pfad/$ein_eintrag" : $ein_eintrag;
break;
default:
if (!preg_match('~^\.\.?$~', $ein_eintrag))
$liste[] = $rekursiv ? "$pfad/$ein_eintrag" : $ein_eintrag;
}
// Unterverzeichnisse?
if(!preg_match('~^\.\.?$~', $ein_eintrag) && is_dir("$pfad/$ein_eintrag") && $rekursiv)
{
$liste2 = verzeichnis_auslesen("$pfad/$ein_eintrag", $welche, $rekursiv);
foreach($liste2 as $ein_eintrag2) $liste[] = $ein_eintrag2;
}
}
closedir($lesezugriff);
sort($liste);
return $liste;
}
$pfad = isset($_GET['pfad']) ? $_GET['pfad'] : '.';
if ($pfad == '') $pfad = '.';
$welche = isset($_GET['welche']) ? $_GET['welche'] : 'alle';
$rekursiv = isset($_GET['rekursiv']);
?>
<html>
<head>
<title>Verzeichnis auslesen</title>
</head>
<body>
<form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="get">
<p>Pfad: <input name="pfad" type="text" /> |
<select name="welche">
<option value="">anzuzeigen</option>
<option value="alle">alles</option>
<option value="verzeichnis">nur Verzeichnisse</option>
<option value="dateien">nur Dateien</option>
</select> | rekursiv <input name="rekursiv" type="checkbox" /> <input type="submit" name="button" value="anzeigen" /></p>
</form>
<?php
$verzeichnis = isset($_GET['pfad']) ? verzeichnis_auslesen($pfad, $welche, $rekursiv) : false;
if ($verzeichnis)
{
echo "<pre>Verzeichnis-Listing:\n";
print_r($verzeichnis);
echo "</pre>\n";
}
?>
</body>
</html>
Liebe Grüße aus Ellwangen,
Felix Riesterer.