Teil von  SELFPHP   Teil von  Praxisbuch  Teil von  Dateisystem via PHP
Letztes Update: 16.08.2005 17:53:45


Navigation

Seite News *

Seite Startseite
Seite Über SELFPHP
Seite Werbung
Seite Kontakt
Seite Forum *
Seite Download *
Seite SELFPHP Banner *
Seite SELFPHP in Buchform
Seite Newsletter *
Seite Impressum

 
* Link führt ins Internet


Anbieterverzeichnis
Informieren Sie sich über die Unternehmen in unserem Anbieterverzeichnis!  

 


SELFPHP Forum
Fragen rund um die Themen PHP? In über 79.000 Beiträgen finden Sie sicher die passende Antwort!  


Newsletter
Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 



 

Nützliche Verzeichnisoperationen




In diesem Abschnitt haben wir noch einige nützliche Codeschnipsel zur Verarbeitung von Verzeichnissen.

Wie wäre es beispielsweise mit Hilfe eines Musters eine Liste von Dateinamen auszugeben.


Beispiel - nur dateinamen die .jpg enthalten



<?php

@$verzeichnis dir(".") or die("Fehler!");
echo 
"Dateien:<br>";

while (
$datei $verzeichnis->read()) {
     if (
preg_match('/.jpg/',$datei)) {
        echo 
"$datei<br>";
    }
}

$verzeichnis->close();

?>



Das Muster lässt sich auf recht einfach auf jedes Dateiformat anpassen. Übrigens um die gefundenen Bilder auszugeben bedarf es lediglich einer kleinen Anpassung der echo-Anweisung: echo "
";.


Bearbeiten sämtlicher Dateien eines Verzeichnisses

Wie wäre es sämtliche Dateien eines Verzeichnisses und dessen Unterverzeichnisse samt Dateien aufzulisten und bearbeiten zu können, ist dies ohne weiteres machbar. Die Antwort auf diese Fragen lässt sich recht einfach mit Hilfe einer Rekursion klären. Hierfür haben wir eine nützliche Funktion, die Sie jederzeit einsetzen und auf Ihre Bedürfnisse anpassen können:


<?php

// Sämtliche Dateien in und unterhalb des Verzeichnisses erfassen
function lese_verzeichnisse($v_name,$funk_name,$max_tiefe 10,$tiefe 0) {
    if (
$tiefe >= $max_tiefe) {
          
error_log("Maximale Tiefe $max_tiefe von $v_name.");
        return 
false;
    }
    
$sub_vers = array();
    
$files = array();
    if (
is_dir($v_name) && is_readable($v_name)) {
        
$verzeichnis dir($v_name);
        while (
false !== ($datei $verzeichnis->read())) {
            
// . und .. nicht ausgeben
            
if (('.' == $datei) || ('..' == $datei)) {
                continue;
            }
            
// Verzeichnisse und Symbolische Links
            
if (is_dir("$v_name/$datei")) {
                
array_push($sub_vers,"$v_name/$datei");
            } else {
                
$funk_name("$v_name/$datei");
            }
        }
        
$verzeichnis->close();
        
// Rekursiver durchlauf um die jeweiligen
        // Unterverzeichnisse zu erreichen
        
foreach ($sub_vers as $sub_ver) {            lese_verzeichnisse($sub_ver,$funk_name,$max_tiefe,$tiefe+1);
        }
    }
}

// Funktion zur Formatierung der Ausgabe
function printatime($p_datei) {
    print 
"<a href=$p_datei>".basename($p_datei)."</a><br>";
}

lese_verzeichnisse('.','printatime');

?>



Die Funktion bearbeiten sämtliche gefundenen Dateien, indem Sie der Ausgabe einen Hyperlink hinzufügt, so dass sich die Dateien einzeln ansprechen lassen.


Besonderheit

Da is_dir() true zurückgibt, wenn es auf einen symbolischen Link trifft, der auf ein Verzeichnis verweist, folgt die Funktion auch symbolischen Links. Sollten Sie den symbolischen Links nicht folgen wollen, ändern Sie die Codezeile:

if (is_dir("$v_name/$datei")) {

in:

if (is_dir("$v_name/$datei") && (! is_link("$v_name/$datei"))) {


 


Nützliche Dateioperationen
 




 sponsored by

Host Europe


HighText iBusiness


Host Europe




© 2001-2006 E-Mail SELFPHP - Damir Enseleit, info@selfphp.deImpressumKontakt
© 2005-2006 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de