Il ya des scripts que vous devriez toujours avoir à portée de main, car il finit par ce que vous avez besoin dans les moments les plus inattendus et les occasions. Cette fonction en PHP, par exemple, m'a sauvé dans de nombreux cas un gaspillage inutile de temps qui passe comme argument une chaîne qui est le chemin complet pour numériser la fonction scan_directory_recursively retourne un tableau contenant la structure complète du répertoire spécifié.

Vous pouvez indiquer, comme le second argument facultatif, une extension ou une portion de texte qui ne sera pas nécessairement figurer dans le nom du fichier. Il s'agit essentiellement d'un filtre pour exclure une certaine catégorie de résultats.

Par exemple:

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

retourne un tableau de tous les répertoires et les fichiers dans / home / ivan / heure, tandis que:

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

retourne un tableau de tous les répertoires et les fichiers dans / home / ivan / heure, sauf pour les fichiers avec l'extension. php!

Il n'est pas mon fait, pourquoi je demande à ceux qui font usage dans leurs projets de ne pas retirer les références à lixlpixel, le site Internet d'où ils viennent.

Voici la fonction:


 <? Php

 / / Fonctions récursives PHP ------------------------- lixlpixel

 / / Scan_directory_recursively (répertoire à analyser, filtre)

 / / Attend chemin vers le répertoire et une extension facultative pour filtrer

 / / Bien sûr, PHP doit avoir les autorisations nécessaires pour lire le répertoire

 / / Spécifiez que vous et tous les fichiers et dossiers à l'intérieur de ce répertoire

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


 / / Pour utiliser cette fonction pour obtenir tous les fichiers et répertoires dans un tableau, écrire:

 / / $ Filestructure scan_directory_recursively = ('path / to / directory');


 / / Pour utiliser cette fonction de scanner un répertoire et de filtrer les résultats, écrire:

 / / $ FileSelection scan_directory_recursively = ('directory', «extension»);


 scan_directory_recursively fonction ($ repertoire, $ filter = FALSE)

 {
    
 / / Si le chemin a une barre oblique à la fin, nous l'enlever ici
    
 if (substr ($ repertoire, -1) == '/')
    
 {
        
 Annuaire $ = substr ($ repertoire, 0, -1);
    
 }

    
 / / Si le chemin n'est pas valide ou non est un répertoire ...
    
 if (file_exists ($ repertoire) | |! is_dir ($ repertoire))
    
 {
        
 / / ... 
 on retourne faux et quitter la fonction
        
 return FALSE;

    
 / / ... 
 d'autre si le chemin est lisible
    
 } Elseif (is_readable ($ repertoire))
    
 {
        
 / / On ouvre le répertoire
        
 $ Directory_list = opendir ($ repertoire);

        
 / / Et parcourir les articles à l'intérieur
        
 while (FALSE! == ($ file = readdir ($ directory_list)))
        
 {
            
 / / Si le pointeur de fichier n'est pas le répertoire courant
            
 / / Ou le répertoire parent
            
 if ($ file! = '.' && $ fichier! = '..')
            
 {
                
 / / Nous construisons le nouveau chemin pour numériser
                
 $ PATH = $ répertoire '/' $ fichier..;

                
 / / Si le chemin est lisible
                
 if (is_readable ($ path))
                
 {
                    
 / / Nous avons scindé le nouveau chemin d'accès par les annuaires
                    
 $ Sous-répertoires = explode ('/', $ path);

                    
 / / Si le nouveau chemin est un répertoire
                    
 if (is_dir ($ path))
                    
 {
                        
 / / Ajouter les détails d'annuaire pour la liste des fichiers
                        
 $ Directory_tree [] = array (
                            
 'Chemin' => $ path,
                            
 'Name' => fin ($ sous-répertoires),
                            
 'Kind' => 'répertoire',

                            
 / / On regarde le nouveau chemin d'accès en appelant cette fonction
                            
 'Contenu' => scan_directory_recursively ($ path, $ filtre));

                    
 / / Si le nouveau chemin est un fichier
                    
 } Elseif (is_file ($ path))
                    
 {
                        
 / / Obtenir l'extension de fichier en prenant tout après le dernier point
                        
 $ Extension = fin (explode (, End ($ sous-répertoires)) '.');

                        
 / / Si il n'y a pas de filtre en Septembre ou le filtre est réglé et des allumettes
                        
 if ($ filtre === FALSE | | $ filtre == $ extension)
                        
 {
                            
 / / Ajouter les détails du fichier à la liste des fichiers
                            
 $ Directory_tree [] = array (
                                
 'Chemin' => $ path,
                                
 'Name' => fin ($ sous-répertoires),
                                
 'Extension' => $ extension,
                                
 'Taille' = filesize> ($ path),
                                
 'Kind' => 'fichier');
                        
 }
                    
 }
                
 }
            
 }
        
 }
        
 / / Fermer le répertoire
        
 closedir ($ directory_list); 

        
 / / Retour liste des fichiers
        
 return $ directory_tree;

    
 / / Si le chemin n'est pas lisible ...
    
 Else {}
        
 / / ... 
 on retourne faux
        
 return FALSE;
    
 }

 }

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


 ?>

Pour votre commodité, mais aussi le mien, j'ajoute ici une version sans les commentaires et prêt pour le téléchargement:

Partagez ce contenu:
  • del.icio.us
  • Google Bookmarks
  • Digg
  • Facebook
  • Technorati
  • MySpace
  • Twitter