begin process at 2012 05 27 19:41:18
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

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

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


 Information sur la source

Note :
Aucune note
Catégorie :Fichier / Disque Classé sous :fonction, lecture, répertoires, récursif, récursive Niveau :Débutant Date de création :24/09/2009 Date de mise à jour :25/09/2009 11:23:05 Vu :3 420

Auteur : mbdx

Ecrire un message privé
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

Fonction récursive retournant les chemins des différents fichiers présents dans un répertoire et tous ses sous-répertoires dans un tableau en PHP4 (équivalent scandir() en PHP5) avec la possibilité de préciser des exeptions (fichier à ne pas charger dans le tableau).

Utilisation :

$rep = "mon-repertoire/";
$rep=extract_files_paths_dir($r ep,0);
print_r($rep);


Source

  • function extract_files_paths_dir($rep,$exeptions=" ") {//Exeptions regex
  • global $tab,$z; //vars à transmettre à la fonction elle même
  • if (!isset($z)) $z=0; //incrémentation
  • if ($z==0) unset($tab); //effacer tab si c'est la première boucle
  • $dir = opendir($rep); //ouverture répertoire
  • while ($f = readdir($dir)) {//A //lecture répertoire
  • if((is_file($rep.$f))&&(!eregi($exeptions,$f))) {//B /* Un fichier ? > ajouter + incrémentation*/
  • $tab[]=$rep.$f; $z++;
  • } //B
  • elseif (is_dir($rep.$f)) { //C /* Un répertoire ? > Appeler la fonction de manière récursive*/
  • if (!ereg("\.+",$f)) {//D
  • extract_files_paths_dir($rep.$f."/");
  • }//D
  • }//C
  • }//A
  • asort($tab);
  • return $tab; //retourne le tableau
  • }
function extract_files_paths_dir($rep,$exeptions=" ") {//Exeptions regex

global $tab,$z; //vars à transmettre à la fonction elle même
if (!isset($z)) $z=0; //incrémentation
if ($z==0) unset($tab); //effacer tab si c'est la première boucle

$dir = opendir($rep); //ouverture répertoire
while ($f = readdir($dir)) {//A //lecture répertoire

   if((is_file($rep.$f))&&(!eregi($exeptions,$f))) {//B /* Un fichier ? > ajouter + incrémentation*/
   $tab[]=$rep.$f; $z++; 
   } //B

   elseif (is_dir($rep.$f)) { //C  /* Un répertoire ? > Appeler la fonction de manière récursive*/
		        if (!ereg("\.+",$f)) {//D
	 	        extract_files_paths_dir($rep.$f."/");
			    }//D
	}//C
}//A

asort($tab);
return $tab; //retourne le tableau

}

 Conclusion

Le tableau retourné sert comme base à tout traitement sur des fichiers (lecture,écriture,includes...). Si vous voyez comment la simplifier encore (en supprimant la var global $tab par exemple), je suis preneur.


 Historique

24 septembre 2009 22:58:21 :
Ajout explication
25 septembre 2009 11:23:06 :
Ajout exeptions Ajout version PHP Ajout tri

 Sources de la même categorie

SUPPRESSION AUTOMATIQUE DES FICHIERS RAW ORPHELINS APRÈS UN ... par malokaff
UPLOADER DES FICHIER DANSUN DOSSIER, SÉCURISÉ AVEC MOT DE PA... par raizzo
COMPTEUR DE VISITES SUR FICHIER par pierreSabatier
FONCTION RECURSIVE DE DOSSIERS par tefa24600
Source avec Zip CONVERSION DES UNITÉS INFORMATIQUE (O, KIO, MIO, GIO, TIO...... par genetApt151

 Sources en rapport avec celle ci

CLEF POUR EAN 13 ET 14 par RaftY
Source avec Zip FONCTION PHP POUR REDIMENSIONNER UNE IMAGE ET UPLOADER DANS ... par GstJasmin
FONCTION QUI VÉRIFIE SI L'ARGUMENT EST UN NOMBRE PREMIER par darkelda
Source avec Zip Source avec une capture LOGGER LE TEMPS D'EXÉCUTION DE VOS FONCTIONS PHP par djroulo
TOUTE PETITE FONCTION QUI EFFACE UN REPERTOIRE NON VIDE par Gorrk

Commentaires et avis

Commentaire de Orange73 le 25/09/2009 10:45:33

Il existe simplement scandir(); en PHP5

Commentaire de winwarrior le 26/09/2009 02:07:21

Sinon pour faire encore plus court, avec la SPL il y a RecursiveDirectoryIterator

Commentaire de neigedhiver le 28/09/2009 14:13:00

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

Commentaire de neigedhiver le 28/09/2009 22:05:30

@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...

Commentaire de malalam le 18/10/2009 11:51:07 administrateur CS

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 ?

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Fonction récursive [ par Trigun222 ] Salut, j'ai trouvé un script qui répond à mes exigences seulement le problème c'est qu'il est illisible et je ne sais pas ou il faut mettre le réperto pb de fonction récursive sur une arborescence sur une base SQL [ par ludovicanceaux ] Salut à tous, J'ai un menu sur plusieurs niveaux stocké dans ma base de donnée et j'ai un pb dans ma fonction récursive, ca fait depuis hier, que j comment faire une fonction en php 5 [ par walidzan ] Bonjour je suis debutant en php 5; je vais faire un classe et une fonction article pour afficher des articles j'ai reussi de faire la connexion au ba Exécution d'un executable (Octave) en PHP [ par chiyo420 ] Bonjour à tous ! Je suis débutante en php et j'ai besoin de vos lumières. Cela fait depuis quelques jours que je cherche en vain une solution à mon p streaming - souci de positionnement de la lecture [ par ju0123456789 ] Bonjour, Je suis en train de mettre en place un systeme de streaming. Tout marche bien, mais comment faire pour que l'on puisse regarder n'importe qu fonction exec et argument [ par chgall2 ] bonjour a tous, je voudrais executer un script shell depuis php et j'ai besoin de vos lumières dans mon code php: exec("sudo /root/scripts/ajout.sh Fonction pour obtenir une couleur en héxa [ par lilj ] Bonjour, je voudrais savoir s'il existe une fonction qui retourne une couleur en hexadécimal de façon aléatoire ?? Merci à vous, Cartes colorées [ par meteo59223 ] Bonsoir à tous, Voilà, je suis passionné de météo et j'aimerai bien pouvoir faire mes propres cartes de température, vent etc ... Colorées en fonctio Listé déroulante en fonction d'une liste de point [ par astuces_jeux ] Bonjour à tous, Le script que je vais vous demander va sûrement vous paraître simple et bizarre, pourtant.. J'ai mis à mes membre un système de point Lecture fichier xls [ par pepyte71 ] Bonjour, Est-il possible de lire et de traiter les données d'un fichier xls sans ouvrir excel en php? Je suis sous linux c'est pour ça que je ne veux


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales