Verzeichnis auslesen und mit einem Link verknüpfen
Auf vielfachen Wunsch, zeige ich Ihnen an Beispielen, wie ein Verzeichnis (Ordner) ausgelesen und mit einem Link verknüpft wird. Damit lässt sich zum Beispiel eine Navigation (oder Site Map) für die Homepage erstellen.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
// Öffnet ein Unterverzeichnis mit dem Namen "daten"
$verzeichnis = openDir("daten");
// Verzeichnis lesen
while ($file = readDir($verzeichnis)) {
// Höhere Verzeichnisse nicht anzeigen!
if ($file != "." && $file != "..") {
// Link erstellen
echo "<a href=\"daten/$file\">$file</a><br>\n";
}
}
// Verzeichnis schließen
closeDir($verzeichnis);
?>
Beispiel-Anzeige:
startseite.php
demo.php
bild.gif
seite1.html
hallo.php
Beachten Sie: Mit diesem PHP-Script werden alle Dateien verlinkt (Bilder, .txt-Dateien etc. und eventuell vorhandene Unterverzeichnisse!)
Einen Filter für bestimmte Dateitypen einbauen
Mit diesem Filter werden nur PHP-Dateien angezeigt, außerdem wird die Dateiendung (.php) beim Linktext entfernt.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
// Öffnet ein Unterverzeichnis mit dem Namen "daten"
$verzeichnis = openDir("daten");
// Verzeichnis lesen
while ($file = readDir($verzeichnis)) {
// Höhere Verzeichnisse nicht anzeigen!
if ($file != "." && $file != "..") {
// Dateityp filtern. Es werden nur .php-Dateien angezeigt
if (strstr($file, ".php")) {
// Dateiendung vom Dateinamen filtern
$name = explode(".", $file);
// Link erstellen
echo "<a href=\"daten/$file\">$name[0]</a><br>\n";
}
}
}
closeDir($verzeichnis); // Verzeichnis schließen
?>
Beispiel-Anzeige:
startseite
demo
hallo
Seitentitel einer Datei auslesen und anzeigen
Statt den Dateinamen einer Datei, kann auch der Title-Tag der Datei ausgelesen werden, dazu muß die Datei zum lesen geöffnet werden.
Beachten Sie: In den Dateien muß im <title>-Tag und ein Seitentitel stehen, damit dieser dann ausgelesen werden kann!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
// Verzeichnisname angeben
$verzeichnisname = "daten";
// Öffnet das Verzeichnis
$verzeichnis = openDir($verzeichnisname);
// Verzeichnis lesen
while ($file = readDir($verzeichnis)) {
// Dateityp filtern
if (strstr($file, ".php")) {
// Datei zum lesen öffnen
$datei = fOpen($verzeichnisname . "/" . $file, "r");
// 1000 Zeichen lesen
$inhalt = fRead($datei, 1000);
// Datei schließen
fClose($datei);
// Titeltext extrahieren
preg_match('/<title>(.*?)<\/title>/i', $inhalt, $titel);
// Link erstellen
echo '<a href="' . $verzeichnisname . '/' . $file . '">' . implode("", $titel) . '</a><br>';
unset($titel[1]); // Titeltext löschen
}
}
closeDir($verzeichnis); // Verzeichnis schließen
?>
Beispiel-Anzeige:
Die Startseite
Eine Demoseite
Hallo Welt!
Anfangsbuchstaben anzeigen
Bei einem größeren Verzeichnis ist es, wegen der Übersichtlichkeit, hilfreich die Anfangsbuchstaben der Dateien mit auszugeben.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$buchstabe_alt = "";
$verzeichnis = openDir("meinverzeichnis");
while ($file = readDir($verzeichnis)) {
if ($file != "." && $file != "..") {
$buchstabe = strtoUpper(mb_substr($file, 0, 1));
if (!strstr($buchstabe_alt, $buchstabe)) {
$buchstabe_alt .= $buchstabe;
// Anfangsbuchstaben anzeigen
echo '<strong>' . $buchstabe . '</strong> <br>';
}
echo '<a href="meinverzeichnis/' . $file . '">' . $file . '</a><br>';
}
}
closeDir($verzeichnis);
?>
Beispiel-Anzeige:
B
bild.gif
D
demo.php
donald.php
download.php
H
hallo.php
S
startseite.php
seite1.html
T
tauschboerse.php
W
wasserspiele.php
Verzeichnis mit PHP 5 auslesen
Mit scanDir()
werden Dateien und Verzeichnisse innerhalb eines angegebenen Pfades aufgelistet.
Diese Liste wird in einem Array gespeichert, mit array_slice()
werden die Punkte (., ..) aus dem Array entfernt.
1
2
3
4
5
6
7
8
<?php
$verzeichnispfad = "daten/";
$verzeichnis = array_slice(scanDir($verzeichnispfad), 2);
foreach ($verzeichnis as $element) {
echo '<a href="' . $verzeichnispfad . $element . '">' . $element . '</a> <br>';
}
?>
Bilder aus einem Verzeichnis auslesen und anzeigen
1
2
3
4
5
6
7
8
<?php
$verzeichnis = 'bilder/';
foreach (array_slice(scanDir($verzeichnis), 2) as $datei) {
if (in_array(substr($datei, -3, 3), array('gif','png','jpg'))) {
echo '<img src="' . $verzeichnis . $datei . ' "><br>';
}
}
?>
Tipps
Verzeichnis als eine Auswahlliste mit Anfangsbuchstaben ausgeben
Dateien in Verzeichnis rekursiv auflisten, mit Filter
Alle Dateien im akt. Verzeichnis und den Unterverz. anzeigen
Neueste Datei in einem Verzeichnis anzeigen
Datei mit der höchsten Nummer in einem Verzeichnis ermitteln
- Dateibrowser
- Ein einfacher Dateibrowser, ideal um PHP-Scripte auf einem lokalen Webserver zu testen, die PHP-Scripte müssen dann nicht mehr umständlich über die Adresszeile des Browsers aufgerufen werden.
- Kleine Suchmaschine
- Diese Suchmaschine durchsucht das aktuelle Verzeichnis und/oder andere Verzeichnisse nach Dateien.