Archiv des Tages 17. Juni 2008

Evolution (Linux Commercial)

1 commento » Verschiedenes , YouTube 1 Kommentar »

Rekursive Suche ein Verzeichnis mit PHP

Nessun commento » Open Source , PHP , Tipps & Tricks Keine Kommentare »

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');


 $directory , $filter = FALSE ) scan_directory_recursively Funktion 

($ directory, $ filter = 
FALSE)

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

    
 / / Wenn der Pfad ist nicht gültig oder nicht, ist ein Verzeichnis ...
    
 ! file_exists ( $directory ) || ! is_dir ( $directory ) ) if 

(file_exists ($ Verzeichnis) | |! is_dir 
($ directory))
    
 {
        
 / / ... 
 wir false zurück und verlassen Sie die Funktion
        
 ; return 
FALSE;

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

($ directory);

        
 / / Und durch die Elemente im Inneren scannen
        
 FALSE !== ( $file = readdir ( $directory_list ) ) ) while 

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

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

('/', $ 
path);

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

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

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

(, Ende 
($ Unterverzeichnisse)) '.');

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

'Kind' => 
'Datei');
                        
 }
                    
 }
                
 }
            
 }
        
 }
        
 / / Schließen Sie das Verzeichnis
        
 $directory_list ) ; 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: