COURTE ET SIMPLE FONCTION RÉCURSIVE POUR LECTURE DE RÉPERTOIRES

Signaler
Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011
-
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/50606-courte-et-simple-fonction-recursive-pour-lecture-de-repertoires

Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
24
Hi,

sans compter que les fonctions ereg* sont bien moins rapides que leurs équivalentes en preg_*.
C'est vraiment un vieux code...pourquoi le ressortir ?
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
@Orange73 : scandir n'est pas récursive.

Allez, Winwarrior vous a mis sur la piste avec la SPL... Comment faire ça en 3 lignes :

foreach ($iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('.')) as $item) {
echo str_repeat("\t", $iterator -> getDepth()), $item -> getFilename(), "\n";
}

Si je peux me permettre, y'a même des sources qui utilisent déjà la SPL pour parcourir des fichiers, et y'en a même qui permettent d'appliquer des filtres pour ne lister que certains fichiers...
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
18
Salut,

while ($f = readdir($dir)) {

Quitte à utiliser cette vieille fonction php3, autant le faire bien :
while (FALSE !($f readdir($dir))) {

Cf la doc : http://fr.php.net/readdir Exemple #1
Messages postés
654
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
10 février 2009
1
Sinon pour faire encore plus court, avec la SPL il y a RecursiveDirectoryIterator
Messages postés
1375
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011

Il existe simplement scandir(); en PHP5