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

Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011 - 25 sept. 2009 à 10:45
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 18 oct. 2009 à 11:51
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

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
18 oct. 2009 à 11:51
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 ?
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
28 sept. 2009 à 22:05
@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...
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
28 sept. 2009 à 14:13
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
winwarrior Messages postés 654 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 10 février 2009 1
26 sept. 2009 à 02:07
Sinon pour faire encore plus court, avec la SPL il y a RecursiveDirectoryIterator
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
25 sept. 2009 à 10:45
Il existe simplement scandir(); en PHP5
Rejoignez-nous