Erstellen eines Verzeichnisses
Aufruf mit create_dir('verzeichnisname');
PHP-Code:
//Erstellen eines Verzeichnisses, hier mit CHMOD 777
function create_dir($neuverz) {
$dir = ".";
$check = true;
$handle = opendir($dir);
while ($file = @readdir ($handle)){
if (is_dir($file) && $file == $neuverz){
$check = false;
}
}
if($check){
mkdir($neuverz);
chmod($neuverz, 0777);
echo "Verzeichnis erfolgreich erstellt.";
}
else{
echo "Verzeichnis existiert schon.";
}
}
Löschen eines Verzeichnisses
Aufruf mit del_dir('verzeichnisname');
PHP-Code:
//Einfaches löschen eine leeren Verzeichnisses
function del_dir($delverz) {
$dir = ".";
$handle = opendir($dir);
while ($file = @readdir ($handle)){
if (is_dir($file) && $file == $delverz){
$check = true;
}
}
if($check){
rmdir($delverz);
echo "Verzeichnis erfolgreich gelöscht.";
}
else{
echo "Verzeichnis existiert nicht.";
}
}
Rekursives Löschen eines Verzeichnisses (samt Unterverzeichnisse)
Aufruf mit clr_dir('verzeichnisname');
PHP-Code:
// Rekursives löschen von Verzeichnissen.
function clr_dir($dir) {
if(@ ! $opendir = opendir($dir)) {
return false;
}
while(false !== ($readdir = readdir($opendir))) {
//wenn es nicht die root-Ebene ist gehe weiter
if($readdir !== '..' && $readdir !== '.') {
//Lösche unnötige Leerzeichen
$readdir = trim($readdir);
//Wenn es eine Datei ist
if(is_file($dir.'/'.$readdir)) {
//Lösche sie, sonst steige neu ein als false
if(@ ! unlink($dir.'/'.$readdir)) {
return false;
}
}
//Wenn es ein Verzeichniss ist
elseif(is_dir($dir.'/'.$readdir)) {
// Rufe die Funktion rekursiv mit false auf
if(! clr_dir($dir.'/'.$readdir)) {
return false;
}
}
}
}
//Schliesse das Verzeichnis
closedir($opendir);
// Lösche das Verzeichnis
if(@ ! rmdir($dir)) {
//Wenn löschen nicht möglich,steige neu ein als false
return false;
}
// Ausstieg aus der Funktion als true
return true;
}
Auflistung aller Verzeichnisse und Dateien (rekursiv)
PHP-Code:
// Funktionsteil. Hier muss eigentlich nichts geändert werden.
function show_dir($dir, $pos=2)
{
if($pos == 2)
{
echo "<hr><pre>";
}
$handle = @opendir($dir);
while ($file = @readdir ($handle))
{
if (eregi("^\.{1,2}$",$file))
{
continue;
}
if(is_dir($dir.$file))
{
printf ("% ".$pos."s <b>%s</b>\n", "|-", $file);
show_dir($dir.$file."/", $pos 3);
}
else
{
printf ("% ".$pos."s %s %s %s \n", "|-","<a href=\"".$dir.$file."\" target=\"_blank\">", $file, "</a>");
}
}
@closedir($handle);
if($pos == 2)
{
echo "</pre><hr>";
}
}
/* Aufruf der Funktion
Angabe des zu durchsuchenden Verzeichnisses:
-Soll das Verzeichnis gelistet werden, in dem das Script auch liegt, dann einfach mit show_dir("./"); aufrufen.
-Soll z.B. das Verzeichnis "Upload" aufgerufen werden, dann einfach mit show_dir("./upload/"); aufrufen.
*/
show_dir("./");
Auslesen von Verzeichnissen mit der Funktion glob()
PHP-Code:
// Liest alle Dateien und Verzeichnisse (*.*) ein
// und gibt diese als Links aus
foreach (glob("*.*") as $dateiname) {
echo "<a href=\"" .$dateiname. "\">" .$dateiname. "</a><br/>";
}
// Mit dem Schalter "GLOB_ONLYDIR" werden alle Verzeichnisse (*)
// ausgelesen und als Links ausgegeben
foreach (glob("*", GLOB_ONLYDIR) as $dateiname) {
echo "<a href=\"" .$dateiname. "\">" .$dateiname. "</a><br/>";
}
// Spitzklammern mit dem Schalter "GLOB_BRACE" erweitern die
// Funktionalität von glob(), so daß man Suchmuster benutzen kann.
// Hier werden alle Textdateien die mit "g" oder "p" beginnen
// gefiltert und als Links ausgegeben
foreach (glob("{[gp]*.txt}", GLOB_BRACE) as $dateiname) {
echo "<a href=\"" .$dateiname. "\">" .$dateiname. "</a><br/>";
}
// Schalter können auch kombiniert werden, wobei die Schalter mit
// einem einfachen Senkrechtstrich getrennt werden!
// Dieses Beispiel filtert nur Verzeichnisse die mit "a" oder "f"
// beginnen und gibt diese als Links aus.
foreach (glob("{[af]*}", GLOB_BRACE | GLOB_ONLYDIR) as $dateiname) {
echo "<a href=\"" .$dateiname. "\">" .$dateiname. "</a><br/>";
}