Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

PARCOURIR UN RÉPERTOIRE ET SES SOUS SOUS SOUS... RÉPERTOIRE ET RETOURNER LES FICHIERS QUI ONT L'EXTENSION VOULUE


Information sur la source

Catégorie :Fichier / Disque Classé sous : dossier, répertoire, parcourir, extension, fichier Niveau : Débutant Date de création : 20/01/2007 Date de mise à jour : 13/03/2007 11:58:56 Vu : 16 171

Note :
Aucune note

Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

Description

Cette fonction va parcourir tous les répertoires et sous répertoires et sous sous répertoires et ...
puits retourner dans un tableau tous les fichiers (avec leurs arborescences) se terminant par l'extension indiquée

L'argument $tableauDeFichier ne devrai pas être utilisé il est utile seulement dans la fonction
 

Source

  • <?
  • function ParcourirDossier($LienRepertoir,$extentionRecherchee="",$tableauDeFichier=false)
  • {
  • $extention=str_replace(".","\.",$extentionRecherchee);
  • if(!$tableauDeFichier)
  • {
  • $tableauDeFichier[0]='';
  • }
  • if(is_dir($LienRepertoir))
  • {
  • $ClassDir= dir($LienRepertoir);
  • while(($nomFichier=$ClassDir->read())!=false)
  • {
  • if($nomFichier=='.'||$nomFichier=='..')
  • {
  • continue;
  • }
  • elseif(is_dir($LienRepertoir."/".$nomFichier))
  • {
  • //si vous enlevez se commentaire vous aurez le nom des dossiers en plus
  • //array_push($tableauDeFichier,$LienRepertoir."/".$nomFichier);
  • $tableauDeFichier= ParcourirDossier($LienRepertoir."/".$nomFichier,$extentionRecherchee,$tableauDeFichier);
  • }
  • elseif(ereg(".*$extention$",$nomFichier))
  • {
  • If($tableauDeFichier[0]=='')
  • {
  • $tableauDeFichier[0]=$LienRepertoir."/".$nomFichier;
  • }
  • else
  • {
  • array_push($tableauDeFichier,$LienRepertoir."/".$nomFichier);
  • }
  • }
  • }
  • return $tableauDeFichier;
  • }
  • else
  • {
  • echo "Erreur";
  • return false;
  • }
  • }
  • /**
  • * Exemple pour inclure tous les fichiers *.inc.php du répertoire include/function
  • * si il y a des répertoires dans le dossier include/function il ira les parcourir et de même si il y a des répertoires dans le répertoire ,...
  • * si vous mettez rien à la place de .inc.php il inclura tous les fichiers
  • */
  • $tableFichier = ParcourirDossier("include/function",".inc.php");
  • foreach($tableFichier as $lienFichier)
  • {
  • include($lienFichier);
  • }
  • ?>
<?
function ParcourirDossier($LienRepertoir,$extentionRecherchee="",$tableauDeFichier=false)
 {
	 $extention=str_replace(".","\.",$extentionRecherchee);
	 if(!$tableauDeFichier)
	 {
	 	$tableauDeFichier[0]='';
	 }
	 if(is_dir($LienRepertoir))
	 {
		 $ClassDir= dir($LienRepertoir);
		 while(($nomFichier=$ClassDir->read())!=false)
		 {
		 	if($nomFichier=='.'||$nomFichier=='..')
		 	{
		 		continue;
		 	}
			elseif(is_dir($LienRepertoir."/".$nomFichier))
			{
			//si vous enlevez se commentaire vous aurez le nom des dossiers en plus
			//array_push($tableauDeFichier,$LienRepertoir."/".$nomFichier);
			$tableauDeFichier= ParcourirDossier($LienRepertoir."/".$nomFichier,$extentionRecherchee,$tableauDeFichier);
			}
			elseif(ereg(".*$extention$",$nomFichier))
			{
				If($tableauDeFichier[0]=='')
				{
					$tableauDeFichier[0]=$LienRepertoir."/".$nomFichier;
				}
				else
				{
					array_push($tableauDeFichier,$LienRepertoir."/".$nomFichier);
				}
			}
		 }
		 return $tableauDeFichier;
	 }
	 else
	 {
		 echo "Erreur";
		 return false;
	 }
 } 
/**
 * Exemple pour inclure tous les fichiers *.inc.php du répertoire include/function  
 * si il y a des répertoires dans le dossier include/function il ira les parcourir et de même si il y a des répertoires dans le répertoire ,...
 * si vous mettez rien à la place de .inc.php il inclura tous les fichiers
 */
$tableFichier = ParcourirDossier("include/function",".inc.php");
foreach($tableFichier as $lienFichier)
{
  include($lienFichier);
}
?>

Historique

20 janvier 2007 17:13:15 :
J'ai essayer de suivre les commentaires de kankrelune se qui a abouti à cette mise à jour. Je n'ai pas tous suivis, pour le reste n'utilisant que rarement la fonction substr, j'ai préféré garder ereg pour être sûr que l'extension serai à la fin . J'ai aussi utilisé la fonction array_push que j'avais oublier ,elle est plus utile que les count que j'avais utilisés
13 mars 2007 11:58:56 :
Ajout d'un exemple

Commentaires et avis

signaler à un administrateur
Commentaire de kankrelune le 20/01/2007 15:32:23

Salut...

$extention=eregi_replace("\.","\\.",$extentionRecherchee);

utilise str_replace() plutot que eregi_replace() pour un remplacement sans expression rationnelle... tu gagnera en perf... de meme pour...

eregi(".*$",$nomFichier)

mieux vaut faire...

in_array(substr($nomFichier,strrpos('.',$nomFichier)),$extensions)

d'ailleur concernant la recherche des extensions mieux vaut passer un tableau directement en argument plutot que passer par une chaine que tu traite ensuite... tu met en premier dans ta boucle...

if($nomFichier === '.' || $nomFichier === '..')
    continue;

et ensuite...

if(is_dir($LienRepertoir."/".$nomFichier))
{
    // traitement d'un répertoire
}
elseif(empty($extentionRecherchee) ||
in_array(substr($nomFichier,strrpos('.',$nomFichier)),$extentionRecherchee))
{
  // traitement d'un fichier
}

Utilise plutot la constante...

DIRECTORY_SEPARATOR

plutot que

"/"

tu gagnera en portabilité

$grandeurTableau = count($tableauDeFichier);
If($tableauDeFichier[0]=='')
{
$tableauDeFichier[0]=$LienRepertoir."/".$nomFichier;
}
else
{
$tableauDeFichier[$grandeurTableau]=$LienRepertoir."/".$nomFichier;
}

le count est inutile...

if(empty($tableauDeFichier[0]))
    $tableauDeFichier[0]= $LienRepertoir.DIRECTORY_SEPARATOR.$nomFichier;
        else
            $tableauDeFichier[]= $LienRepertoir.DIRECTORY_SEPARATOR.$nomFichier;

un truc con mais ta boucle s'arrêtera si php tombe sur un fichier appelé 0 donc fais plutot

while(false !== ($nomFichier = $ClassDir->read()))

@ tchaOo°

signaler à un administrateur
Commentaire de trpp111 le 22/01/2007 17:14:54

Je ne met pas de note pour cette qource, ne l'ayant pas testée, et pour cause : je n'arrive pas à accéder à un répertoire distant.
Mon problème est de lister et traiter les fichiers contenus dans un répertoire situé sur une machine du réseau.
Quelle est la syntaxe du chemin pour y accéder?
Si quequ'un a une idée, merci de vos réponses!!
(je testerai cette source ensuite )

signaler à un administrateur
Commentaire de tgk le 10/03/2007 18:46:00

Bonjour,

Je cherche un script comme celui-ci mais j'ai pas vraiment compris comment on l'utilise. un petit exemple serait la bienvenu.

Merci

signaler à un administrateur
Commentaire de mtrzen le 13/03/2007 19:20:08

Tres pratique, cela me sauve la vie, je venais de faire une fonction listant les dossiers et sous dossiers comme la tienne, mais l avantage de la tienne est la possibilité de faire un tri avant affichage

rsort($tableFichier);
avant
foreach($tableFichier as $lienFichier)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

comment avec un "parcourir" ouvrir le fichier avec la bonne extension? [ par orion2a ] bonjour avec un "parcourir (en php) je vais chercher le chemin d'un fichier sur le reseau ou sur mon disk dur , en java script , je memorise ce chemin Uploader une image. [ par mwa_85 ] Bonjour, Vola daeux semaine que je suis en rade pour réussir à faire ce p*****n de script, pour uploader 1 image, la copié dans un dossier et la min galerie photo [ par webide ] Bonjour,J'ais un souci avec un script d'upload.Lorsque je vais dans l'espace membre, chez chaque membre j'ais un lien vers sa galerie photosVoici le c bug sur move_uploaded_file()... (gros fichiers) [ par Waynejunior ] Bonjour, j'ai apparemment un bug sur un script de move_uploaded_file()... sur de gros fichiers, mon script (voir en dessous) ne marche pas. Il ne fait Uploader [ par ldevun ] Bonjour, Je souhaite faire une copie de fichier dans un répertoire distant. Mon probleme réside lorsque je veux mettre une condition si je choisi d al lister dossiers uniquements [ par shadow1779 ] Bonjour,il existe dans les codes de nombreux scripts pour lister le contenu d'un dossier, cependant cela liste les fichiers et dossier contenu, je vou lien vers tous les fichier d'un dissier [ par kelm_by ] salut tous le monde,j'ai fait ce code pour metre un lien vers tous les fichier d'un dosier mais ca marche pas aider moi svp&lt;?$folder = "./";$dossie Verifier si un répertoire est présent sur le server [ par thedjpredator ] Bonjour,Jai un petit problème jai réalisé un petit système de navigation entre répertoiresde mon site du style :/dossier1//dossier2//dossier3/...Avec uploader un fichier (à l'aide!!!!) [ par chrak ] bonjour ,j' ai un site chez ifrance , je veux uploader des images ds mon rep image de mon site , et j' arrive pas , voici le script simplifier &lt; bouton qui fait 2 actions [ par vinz78 ] Salut alors voici mon code &lt;?php// Constantesdefine('TARGET', 'E://wamp/www/Projet/Projet2/');     // Repertoire cibledefine('MAX_SIZE', 512000);  


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,452 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.