Obtenir des dossiers avec PHP glob - nombre illimité de niveaux de profondeur
J'ai ce travail fonction qui trouve des dossiers et crée un tableau.
function dua_get_files($path)
{
foreach (glob($path . "/*", GLOB_ONLYDIR) as $filename)
{
$dir_paths[] = $filename;
}
return $dir_paths;
}
Cette fonction ne peut trouver les répertoires sur l'emplacement actuel. Je veux trouver les chemins de répertoire dans les dossiers enfants et de leurs enfants et ainsi de suite.
Le tableau doit toujours être une simple liste de chemins d'accès aux répertoires.
Un exemple de la façon dont le tableau de sortie devrait ressembler à
$dir_path[0] = 'path/folder1';
$dir_path[1] = 'path/folder1/child_folder1';
$dir_path[2] = 'path/folder1/child_folder2';
$dir_path[3] = 'path/folder2';
$dir_path[4] = 'path/folder2/child_folder1';
$dir_path[5] = 'path/folder2/child_folder2';
$dir_path[6] = 'path/folder2/child_folder3';
OriginalL'auteur Jens Törnell | 2011-04-24
Vous devez vous connecter pour publier un commentaire.
Si vous voulez récursive de travail sur les répertoires, vous devriez jeter un oeil à la
RecursiveDirectoryIterator
.pourquoi RecursiveDirectoryIterator classe ? voir ma réponse
parce que, en utilisant ce que itérateur, il n'y a pas besoin de faire de la récursivité vous-même 😉 ;; @Jens votre montage est en attente d'approbation, et a besoin d'une autre "approuver vote" s'affiche ; si elle n'est pas approuvé bientôt, je vais modifier moi-même, d'ajouter ce que vous avez posté, merci !
Pas sûr que je comprends vraiment ce que tu veux dire ; mais si PHP fournit de telles classes, pourquoi ne pas les utiliser ?
Heu si votre serveur n'a pas le PHP >= 5.1.2 (qui est plus que ans !), vous avez un problème ^^ PHP 5.2 (qui est âgé de plus de 5.1, surtout pour la version 5.2.17) lui-même a atteint sa fin de vie... Si vous considérez que vous devez écrire le code qui doit être compatible avec PHP < 5.1, et bien, bonne chance ! (et je ne voudrais pas être à votre place, en fait)
OriginalL'auteur Pascal MARTIN
Essayez plutôt ceci:
ni est la réponse, mais apparemment il fait le travail. À l'aide de glob pour cette tâche est tout simplement absurde.
OriginalL'auteur Alix Axel
Utiliser cette fonction :
OriginalL'auteur D.A.V.O.O.D
Très étrange, tout le monde les conseils de la récursivité, mais mieux juste de cycle:
OriginalL'auteur Crusader
Vous pouvez utiliser php GLOB fonction, mais vous devez créer une fonction récursive pour analyser des répertoires à l'infini au niveau de la profondeur. Puis stocker le résultat dans une variable globale.
OriginalL'auteur eliz82
Pour PHP, si vous êtes sur linux/unix, vous pouvez également utiliser des backticks (l'exécution du shell) avec les unix
find
de commande. Répertoire de la recherche sur le système de fichiers peut prendre un certain temps et a frappé une boucle -- le systèmefind
commande est déjà construit pour la vitesse et pour gérer le système de fichier en boucle. En d'autres termes, le système exec appel est susceptible de coûter beaucoup moins de cpu-temps que l'utilisation de PHP lui-même à la recherche de l'arborescence du système de fichiers.N'oubliez pas de désinfecter le $path de l'entrée, de sorte que les autres utilisateurs ne passent pas en sécurité pour autant compromettre noms de chemin d'accès (à l'instar de l'url ou de quelque chose).
De le mettre dans un tableau
OriginalL'auteur Beracah