Scripte

PHP Script: dir_functions-0.2_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 ) :: ALPHA VERSION!
  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.  
  30. // -----------------------------------------------------------------------
  31. function dir_up($path)  /* Diese Funktion ist als experimentell eingestuft!! */
  32. {
  33.     // Wenn der übergebene Pfad Slashes enthalt (keine Backslashes
  34.     if(eregi("/", $path))
  35.     {
  36.         // Dann den Pfad anhand der Slashes auflösen
  37.         $dirs = explode("/", $path);
  38.         // Wenn das letze Element leer ist, da z.B. der $path mit / geendet hat
  39.         if(empty($dirs[ count($dirs) -1 ]))
  40.         {
  41.             // Letztes Arrayelement löschen und neues letztes Element leeren
  42.             unset($dirs[ count($dirs) -1 ]);
  43.             $dirs[ count($dirs) -1 ] = "";
  44.         }
  45.         // Sonst einfach nur das letzte Element im Array leeren
  46.         else
  47.         {
  48.             $dirs[ count($dirs) -1 ] = "";
  49.         }
  50.         // Das Array mit / verbinden und zurückliefern
  51.         return implode("/", $dirs);
  52.     }
  53.     // Ansonsten, wenn der Pfad Backslashes enthält
  54.     elseif(ereg("\\\\", $path))
  55.     {
  56.         // Dann den Pfad anhand der Backslashes auflösen
  57.         $dirs = explode("\\", $path);
  58.         // Wenn das letze Element leer ist, da z.B. der $path mit \ geendet hat
  59.         if(empty($dirs[ count($dirs) -1 ]))
  60.         {
  61.             // Letztes Arrayelement löschen und neues letztes Element leeren
  62.             unset($dirs[ count($dirs) -1 ]);
  63.             $dirs[ count($dirs) -1 ] = "";
  64.         }
  65.         // Sonst einfach nur das letzte Element im Array leeren
  66.         else
  67.         {
  68.             $dirs[ count($dirs) -1 ] = "";
  69.         }
  70.         // Das Array mit \ verbinden und zurückliefern
  71.         return implode("\\", $dirs);
  72.     }
  73.     // In allen anderen Fällen enthält der übergebene Pfad weder Slashes noch Backslashes,
  74.     // womit das Verzeichnis eine Ebene höher, mit ./ anzusprechen wäre
  75.     else
  76.     {
  77.         // Es wird im Linuxstil zurückgegeben, da dies allgemeingültig ist
  78.         return "./";
  79.     }
  80. }
  81.  
  82. // -----------------------------------------------------------------------
  83. function dir2array($dirpath, $ht_files = false, $dot_files = false)
  84. {
  85.     // Wenn das Verzeichnis nicht geöffnet werden kann, false zurück liefern
  86.     if(!$handle = opendir($dirpath))
  87.     {
  88.         return false;
  89.     }
  90.     // Rückgabearray für Filenames initialisieren
  91.     $files  = array();
  92.     // Für jeden Inhalt des Ordners...
  93.     while(($file = readdir($handle)) !== false)
  94.     {
  95.         // Wenn
  96.         //    der Dot-File Modus aktiviert ist oder der File kein Dot-File ist
  97.         //    UND
  98.         //    der ht-File Modus aktiviert ist oder der File kein ht-File ist
  99.         if(  ($dot_files == true OR ($file != "." AND $file != ".."))
  100.              AND
  101.              ($ht_files == true OR !preg_match("/(.*)\.ht(.*)/U", $file))
  102.           )
  103.         {
  104.             // Dann den File in das Rückgabearray hinzufügen
  105.             $files[] = $file;
  106.         }
  107.     }
  108.     // Den Handle korrekt schließen
  109.     closedir($handle);
  110.     // Das Array mit den Files sortieren
  111.     sort($files);
  112.     // Und das Array zurückgeben
  113.     return $files;
  114. }
  115.  
  116. // -----------------------------------------------------------------------
  117. function rm_dir_files($dirpath)
  118. {
  119.     // Backslashes durch normale Slashes ersetzen - multifunktional
  120.     $dirpath = str_replace("\\", "/", $dirpath);
  121.     // Wenn das letzte Zeichen in $dirpath ein Slash ist, diesen entfernen
  122.     if(substr($dirpath, -1, 1) == "/")
  123.     {
  124.         $dirpath = substr($dirpath, 0, -1);
  125.     }
  126.     // Wenn das Verzeichnis nicht geöffnet werden kann, false zurück liefern
  127.     if(!$handle = opendir($dirpath))
  128.     {
  129.         return false;
  130.     }
  131.     // Für jeden Inhalt des Ordners...
  132.     while(($file = readdir($handle)) !== false)
  133.     {
  134.         // Die Einträge . und .. auslassen
  135.         if($file == "." OR $file == "..")
  136.         {
  137.             continue;
  138.         }
  139.         // Ist der aktuelle Eintrag eine Datei, diese löschen
  140.         if(is_file($dirpath . "/" . $file))
  141.         {
  142.             unlink($dirpath . "/" . $file);
  143.         }
  144.         // Sonst, wenn es ein Verzeichnis ist, dieses leeren und löschen
  145.         // (per rm_dir_files())
  146.         else
  147.         {
  148.             rm_dir_files($dirpath . "/" . $file);
  149.         }
  150.     }
  151.     // Den Handle korrekt schließen
  152.     closedir($handle);
  153.     // Das Verzeichnis selber löschen
  154.     rmdir($dirpath);
  155.     // und true zurückliefern
  156.     return true;
  157. }
  158.  
  159. // -----------------------------------------------------------------------
  160. function filesize_dir($dirpath)
  161. {
  162.     // Buffer für Dateigröße initialisieren und auf 0 setzen
  163.     $filesize = 0;
  164.     // Wenn das letzte Zeichen in $dirpath ein Slash ist, diesen entfernen
  165.     if(substr($dirpath, -1, 1) == "/")
  166.     {
  167.         $dirpath = substr($dirpath, 0, -1);
  168.     }
  169.     // Wenn das Verzeichnis nicht geöffnet werden kann, false zurück liefern
  170.     if(!$handle = opendir($dirpath))
  171.     {
  172.         return false;
  173.     }
  174.     while(($file = readdir($handle)) !== false)
  175.     {
  176.         // Die Einträge . und .. auslassen
  177.         if($file == "." OR $file == "..")
  178.         {
  179.             continue;
  180.         }
  181.         // Ist der aktuelle Eintrag eine Datei, Größe zum Buffer hinzuzählen
  182.         if(is_file($dirpath . "/" . $file))
  183.         {
  184.             $filesize += filesize($dirpath . "/". $file);
  185.         }
  186.         // Sonst, wenn es ein Verzeichnis ist, Funktion erneut aurufen
  187.         // und Rückgabewert addieren
  188.         else
  189.         {
  190.             $filesize += filesize_dir($dirpath . "/" . $file);
  191.         }
  192.     }
  193.     // Endergebnis zurückliefern
  194.     return $filesize;
  195. }
  196.  
  197. // -----------------------------------------------------------------------
  198. /*
  199.     ENDE
  200. */
  201. ?>

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.