Scripte

PHP Script: dir_functions-0.2.1_beta.lib.php

Nach obenNach unten

Zurück zur Übersicht - Datei downloaden

  1. <?php
  2.  
  3. //         ************************************
  4. //         ***    dir_functions.lib.php     ***
  5. //         ************************************
  6.  
  7. // -----------------------------------------------------------------------
  8. /*
  9.     Copyright:
  10.     ==============
  11.     Dieses Script wurde ursprünglich von Dennis Riehle geschrieben - Sie dürfen
  12.     das Script frei verwenden, bearbeiten und weitergeben, solange dieser Copyright
  13.     Hinweis nicht entfernt wird.
  14.     Es erfolgt keinerlei Haftung für eventuell durch dieses Script entstandene
  15.     Schäden - die Benutzung erfolgt auf eigene Gefahr.
  16.    
  17.     Beschreibung:
  18.     ==============
  19.     Dieses Script enthält ein paar einzelne PHP Funktionen, welche sich bei der
  20.     Arbeit auf dem lokalen File System hilfreich zeigen können.
  21.    
  22.     Inhalt:
  23.     ==============
  24.     - Funktion: dir_up ( string Path )
  25.     - Funktion: dir2array ( string Path [ , bool .ht-Files [ , bool Dot-Files ] ] )
  26.     - Funktion: rm_dir_files ( string Path )
  27.     - Funktion: filesize_dir ( string Path )
  28.    
  29.     Veränderungen:
  30.     ==============
  31.     Die Funktion dir2array() hat bis jetzt auch Datei mit Namen wie xy.htxy ausgefiltert,
  32.     allerdings sollten nur .htxy herrausgefiltert werden, denn in der Apache verbietet
  33.     auch nur auf letztere den Zugriff über HTTP.
  34. */
  35.  
  36. // -----------------------------------------------------------------------
  37. function dir_up($path)
  38. {
  39.     // Wenn der übergebene Pfad Slashes enthalt (keine Backslashes
  40.     if(eregi("/", $path))
  41.     {
  42.         // Dann den Pfad anhand der Slashes auflösen
  43.         $dirs = explode("/", $path);
  44.         // Wenn das letze Element leer ist, da z.B. der $path mit / geendet hat
  45.         if(empty($dirs[ count($dirs) -1 ]))
  46.         {
  47.             // Letztes Arrayelement löschen und neues letztes Element leeren
  48.             unset($dirs[ count($dirs) -1 ]);
  49.             $dirs[ count($dirs) -1 ] = "";
  50.         }
  51.         // Sonst einfach nur das letzte Element im Array leeren
  52.         else
  53.         {
  54.             $dirs[ count($dirs) -1 ] = "";
  55.         }
  56.         // Das Array mit / verbinden und zurückliefern
  57.         return implode("/", $dirs);
  58.     }
  59.     // Ansonsten, wenn der Pfad Backslashes enthält
  60.     elseif(ereg("\\\\", $path))
  61.     {
  62.         // Dann den Pfad anhand der Backslashes auflösen
  63.         $dirs = explode("\\", $path);
  64.         // Wenn das letze Element leer ist, da z.B. der $path mit \ geendet hat
  65.         if(empty($dirs[ count($dirs) -1 ]))
  66.         {
  67.             // Letztes Arrayelement löschen und neues letztes Element leeren
  68.             unset($dirs[ count($dirs) -1 ]);
  69.             $dirs[ count($dirs) -1 ] = "";
  70.         }
  71.         // Sonst einfach nur das letzte Element im Array leeren
  72.         else
  73.         {
  74.             $dirs[ count($dirs) -1 ] = "";
  75.         }
  76.         // Das Array mit \ verbinden und zurückliefern
  77.         return implode("\\", $dirs);
  78.     }
  79.     // In allen anderen Fällen enthält der übergebene Pfad weder Slashes noch Backslashes,
  80.     // womit das Verzeichnis eine Ebene höher, mit ./ anzusprechen wäre
  81.     else
  82.     {
  83.         // Es wird im Linuxstil zurückgegeben, da dies allgemeingültig ist
  84.         return "./";
  85.     }
  86. }
  87.  
  88. // -----------------------------------------------------------------------
  89. function dir2array($dirpath, $ht_files = false, $dot_files = false)
  90. {
  91.     // Wenn das Verzeichnis nicht geöffnet werden kann, false zurück liefern
  92.     if(!$handle = opendir($dirpath))
  93.     {
  94.         return false;
  95.     }
  96.     // Rückgabearray für Filenames initialisieren
  97.     $files  = array();
  98.     // Für jeden Inhalt des Ordners...
  99.     while(($file = readdir($handle)) !== false)
  100.     {
  101.         // Wenn
  102.         //    der Dot-File Modus aktiviert ist oder der File kein Dot-File ist
  103.         //    UND
  104.         //    der ht-File Modus aktiviert ist oder der File kein ht-File ist
  105.         if(  ($dot_files == true OR ($file != "." AND $file != ".."))
  106.              AND
  107.              ($ht_files == true OR !preg_match("/^\.ht(.*)/i", $file))
  108.           )
  109.         {
  110.             // Dann den File in das Rückgabearray hinzufügen
  111.             $files[] = $file;
  112.         }
  113.     }
  114.     // Den Handle korrekt schließen
  115.     closedir($handle);
  116.     // Das Array mit den Files sortieren
  117.     sort($files);
  118.     // Und das Array zurückgeben
  119.     return $files;
  120. }
  121.  
  122. // -----------------------------------------------------------------------
  123. function rm_dir_files($dirpath)
  124. {
  125.     // Backslashes durch normale Slashes ersetzen - multifunktional
  126.     $dirpath = str_replace("\\", "/", $dirpath);
  127.     // Wenn das letzte Zeichen in $dirpath ein Slash ist, diesen entfernen
  128.     if(substr($dirpath, -1, 1) == "/")
  129.     {
  130.         $dirpath = substr($dirpath, 0, -1);
  131.     }
  132.     // Wenn das Verzeichnis nicht geöffnet werden kann, false zurück liefern
  133.     if(!$handle = opendir($dirpath))
  134.     {
  135.         return false;
  136.     }
  137.     // Für jeden Inhalt des Ordners...
  138.     while(($file = readdir($handle)) !== false)
  139.     {
  140.         // Die Einträge . und .. auslassen
  141.         if($file == "." OR $file == "..")
  142.         {
  143.             continue;
  144.         }
  145.         // Ist der aktuelle Eintrag eine Datei, diese löschen
  146.         if(is_file($dirpath . "/" . $file))
  147.         {
  148.             unlink($dirpath . "/" . $file);
  149.         }
  150.         // Sonst, wenn es ein Verzeichnis ist, dieses leeren und löschen
  151.         // (per rm_dir_files())
  152.         else
  153.         {
  154.             rm_dir_files($dirpath . "/" . $file);
  155.         }
  156.     }
  157.     // Den Handle korrekt schließen
  158.     closedir($handle);
  159.     // Das Verzeichnis selber löschen
  160.     rmdir($dirpath);
  161.     // und true zurückliefern
  162.     return true;
  163. }
  164.  
  165. // -----------------------------------------------------------------------
  166. function filesize_dir($dirpath)
  167. {
  168.     // Buffer für Dateigröße initialisieren und auf 0 setzen
  169.     $filesize = 0;
  170.     // Wenn das letzte Zeichen in $dirpath ein Slash ist, diesen entfernen
  171.     if(substr($dirpath, -1, 1) == "/")
  172.     {
  173.         $dirpath = substr($dirpath, 0, -1);
  174.     }
  175.     // Wenn das Verzeichnis nicht geöffnet werden kann, false zurück liefern
  176.     if(!$handle = opendir($dirpath))
  177.     {
  178.         return false;
  179.     }
  180.     while(($file = readdir($handle)) !== false)
  181.     {
  182.         // Die Einträge . und .. auslassen
  183.         if($file == "." OR $file == "..")
  184.         {
  185.             continue;
  186.         }
  187.         // Ist der aktuelle Eintrag eine Datei, Größe zum Buffer hinzuzählen
  188.         if(is_file($dirpath . "/" . $file))
  189.         {
  190.             $filesize += filesize($dirpath . "/". $file);
  191.         }
  192.         // Sonst, wenn es ein Verzeichnis ist, Funktion erneut aurufen
  193.         // und Rückgabewert addieren
  194.         else
  195.         {
  196.             $filesize += filesize_dir($dirpath . "/" . $file);
  197.         }
  198.     }
  199.     // Endergebnis zurückliefern
  200.     return $filesize;
  201. }
  202.  
  203. // -----------------------------------------------------------------------
  204. /*
  205.     ENDE
  206. */
  207. ?>

Zurück zur Übersicht - Datei downloaden

Nach obenNach unten

Valid XHTML 1.0! Valid CSS!

Letzte Änderungen: Sonntag, der 03. Februar 2008
© 2005, Dennis Riehle.