Es gibt Skripte, die Sie immer zur Hand haben sollte, weil es am Ende, dass Sie in die überraschendsten Momente und Gelegenheiten müssen. Diese Funktion in PHP, zum Beispiel, rettete mich in vielen Fällen eine unnötige Verschwendung von Zeit vorbei, als Argument einen String, der den vollständigen Pfad zu scannen, die scan_directory_recursively Funktion gibt ein Array mit die komplette Struktur in das angegebene Verzeichnis ist.

Sie können angeben, wie das zweite optionale Argument, eine Verlängerung oder einen Teil des Textes, die nicht unbedingt in der Dateiname angezeigt. Dies ist im Wesentlichen ein Filter, eine bestimmte Klasse der Ergebnisse zu beteiligen.

Zum Beispiel:

$dirs=scan_directory_recursively('/home/ivan/Tempo');

gibt ein Array aller Verzeichnisse und Dateien in / home / ivan / Zeit, während:

$dirs=scan_directory_recursively('/home/ivan/Tempo','.php');

gibt ein Array aller Verzeichnisse und Dateien in / home / ivan / Zeit außer für Dateien mit der Endung. php!

Es ist nicht meine Schuld, warum ich denen, die Nutzung zu machen in ihren Projekten nicht entfernen Referenzen zu fragen lixlpixel, die Internet-Site aus denen sie kommen.

Hier ist die Funktion:


 <? Php

 / / Rekursive PHP-Funktionen ------------------------- lixlpixel

 / / Scan_directory_recursively (Verzeichnis zu scannen, Filter)

 / / Erwartet Pfad zu dem Verzeichnis und eine optionale Erweiterung zu filtern

 / / Natürlich PHP hat, um die Berechtigungen haben, um das Verzeichnis zu lesen

 / / Geben Sie und alle Dateien und Ordner in diesem Verzeichnis

 / / ------------------------------------------------ ------------


 / / Um diese Funktion nutzen, um alle Dateien und Verzeichnisse in einem Array zu bekommen, schreiben Sie:

 / / $ Dateistruktur scan_directory_recursively = ('pfad / zum / Verzeichnis');


 / / Um diese Funktion nutzen, um ein Verzeichnis zu scannen und die Ergebnisse filtern, schreiben Sie:

 / / $ Fileselection scan_directory_recursively = ('Verzeichnis', 'Erweiterung');


 scan_directory_recursively Funktion ($ directory, $ filter = FALSE)

 {
    
 / / Wenn der Pfad hat einen Schrägstrich am Ende entfernen wir es hier
    
 if (substr ($ Verzeichnis, -1) == '/')
    
 {
        
 $ Verzeichnis = substr ($ Verzeichnis, 0, -1);
    
 }

    
 / / Wenn der Pfad ist nicht gültig oder nicht, ist ein Verzeichnis ...
    
 if (file_exists ($ Verzeichnis) | |! is_dir ($ directory))
    
 {
        
 / / ... 
 wir false zurück und verlassen Sie die Funktion
        
 return FALSE;

    
 / / ... 
 sonst, wenn der Pfad ist lesbar
    
 } Elseif (is_readable ($ directory))
    
 {
        
 / / Wir öffnen Sie das Verzeichnis
        
 $ Directory_list = opendir ($ directory);

        
 / / Und durch die Elemente im Inneren scannen
        
 while (FALSE! == ($ file = readdir ($ directory_list)))
        
 {
            
 / / Wenn die filepointer ist nicht das aktuelle Verzeichnis
            
 / / Oder das übergeordnete Verzeichnis
            
 if ($ file! = '.' && $ file! = '..')
            
 {
                
 / / Wir bauen den neuen Pfad zu scannen
                
 $ PATH = $ Verzeichnis '/' $ File..;

                
 / / Wenn der Pfad ist lesbar
                
 if (is_readable ($ path))
                
 {
                    
 / / Wir teilen den neuen Pfad durch Verzeichnisse
                    
 $ Unterverzeichnisse = explode ('/', $ path);

                    
 / / Wenn der neue Pfad ist ein Verzeichnis
                    
 if (is_dir ($ path))
                    
 {
                        
 / / Fügen Sie das Verzeichnis Details zur Dateiliste
                        
 $ Directory_tree [] = array (
                            
 'Pfad' => $ path,
                            
 'Name' => Ende ($ Unterverzeichnisse),
                            
 'Kind' => 'Verzeichnis',

                            
 / / Wir scannen den neuen Pfad durch den Aufruf dieser Funktion
                            
 'Content' => scan_directory_recursively ($ path, $ filter));

                    
 / / Wenn der neue Pfad ist eine Datei
                    
 } Elseif (is_file ($ path))
                    
 {
                        
 / / Holen Sie sich die Datei-Endung, indem sie alles nach dem letzten Punkt
                        
 $ Extension = Ende (explode (, Ende ($ Unterverzeichnisse)) '.');

                        
 / / Wenn es keinen Filter im September oder die Filter gesetzt und Spiele
                        
 if ($ filter === false | | $ filter == $ extension)
                        
 {
                            
 / / Fügen Sie die Datei Einzelheiten zur Dateiliste
                            
 $ Directory_tree [] = array (
                                
 'Pfad' => $ path,
                                
 'Name' => Ende ($ Unterverzeichnisse),
                                
 'Extension' => $ Verlängerung,
                                
 'Größe' => filesize ($ path),
                                
 'Kind' => 'Datei');
                        
 }
                    
 }
                
 }
            
 }
        
 }
        
 / / Schließen Sie das Verzeichnis
        
 closedir ($ directory_list); 

        
 / / Return Dateiliste
        
 return $ directory_tree;

    
 / / Wenn der Pfad ist nicht lesbar ...
    
 Else {}
        
 / / ... 
 wir false zurück
        
 return FALSE;
    
 }

 }

 / / ------------------------------------------------ ------------


 ?>

Für Ihre Bequemlichkeit, sondern auch meine eigene, füge ich hier eine Version ohne den Kommentaren und zum Download bereit:

Diese Seite mitteilen:
  • del.icio.us
  • Google Bookmarks
  • Digg
  • Facebook
  • Technorati
  • MySpace
  • Twitter