[php] Listage fichiers sous repertoires

Résolu/Fermé
Drak - 26 août 2008 à 15:23
 Drak - 30 août 2008 à 13:50
Bonjour à tous,
J'ai deux scripts php trouvés ici et là.

Le premier liste les sous repertoires d'un repertoire :

<? 
 $liste_rep = scandir("./"); 
 $i = 0; 
 $num = count($liste_rep); 
 while($i < $num){ 
 echo "$liste_rep[$i]<br />"; 
 $i++; 
 } 


  if(count($ListFiles)!=0) 
  { 
     if($list_tri == 'DESC') 
     { 
         rsort($ListFiles); 
     } 
     else 
     { 
         sort($ListFiles); 
     } 
  } 

  $i=0; 
  while ( $i < count($ListFiles)) 
  { 
      echo $ListFiles[$i]; 
      $i++; 
  } 

?> 


Le second, lui, liste le contenu d'un sous repertoire précis :
<?php
$dirname = '_le_sous_repertoire_/';
$dir = opendir($dirname); 

while($file = readdir($dir)) {
	if($file != '.' && $file != '..' && !is_dir($dirname.$file))
	{
		echo $dirname.$file.'<br>';
	}
}

closedir($dir);
 ?>


Ce que j'aimerai, c'est combiner les deux, de facon à lister tous les fichiers de tous les sous repertoires, en faisant une boucle par exemple, mais je ne m'y connais pas assez pour y parvenir.
D'où ma venue ici, où j'espère trouver une réponse. Je vous remercie tous d'avance pour votre aide,
Drak.
A voir également:

7 réponses

legulysse Messages postés 121 Date d'inscription mercredi 4 juillet 2007 Statut Membre Dernière intervention 16 janvier 2010 15
27 août 2008 à 01:13
essaye un truc de ce style :

$liste_rep = scandir("./"); 
 $i = 0; 
 $num = count($liste_rep); 
 while($i < $num)
{ 
     echo "$liste_rep[$i]<br />"; 

    $dirname = $liste_rep[$i];
    $dir = opendir($dirname); 

    while($file = readdir($dir)) {
	if($file != '.' && $file != '..' && !is_dir($dirname.$file))
	{
		echo $dirname.$file.'<br>';
	}
     }

     $i++; 
 } 
1
legulysse Messages postés 121 Date d'inscription mercredi 4 juillet 2007 Statut Membre Dernière intervention 16 janvier 2010 15
27 août 2008 à 21:22
ravi d'avoir pu t'aider^^

j'ai mis cette solution à titre d'exemple, et j'ai ecris dans le noir, donc il y a peut etre des trucs pas au point, mais le principe est là.
1
Hum.. Je vais encore t'embetter un peu. Dans le listing, comment pourrais je faire pour retirer toutes les lignes qui contiennent une expressions ? Dans mon cas, ignorer les fichiers dont l'extension est .TN__.jpg
En gros, je suis dans un repertoire plein d'images, avec a chaque fois une miniature (TN__) et il me faut uniquement les images completes, sans les miniatures..
Une idée ? Merci =)
Drak.
0
amjahed Messages postés 335 Date d'inscription dimanche 30 décembre 2007 Statut Membre Dernière intervention 21 mars 2010 123
27 août 2008 à 00:28
0
Non, je cherche un script qui me permette de lister, mais sans aucune mise en forme, du type :
dossier1/fichier1.txt
dossier1/fichier2.jpg
dossier1/fichier3.txt
dossier2/fichier1.txt
dossier2/fichier2.xml
dossier3/fichier1.doc
...

Une autre idée ? La combinaison des deux scripts est elle trop dure a realiser ?
Merci,
Drak.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Hey !
Merci pour cette reponse fructueuse ! Par contre, j'ai retiré la ligne
     echo "$liste_rep[$i]<br />"; 
qui me rajoute une ligne inutile.
J'ai par contre quelques erreurs en fin de page, mais rien de grave, le listing est complet.
Mais merci merci !
A bientot,
Drak.
0
legulysse Messages postés 121 Date d'inscription mercredi 4 juillet 2007 Statut Membre Dernière intervention 16 janvier 2010 15
28 août 2008 à 18:58
C'est simple, juste avant l'echo, tu fais une vérification sur le nom du fichier, c'est à dire le contenu de $file. Je n'ai plus en tête les noms des fonctions qui te seront utiles, par contre.

if($file != '.' && $file != '..' && !is_dir($dirname.$file))
{
    $afficher = true;

    --- verifier si $file contient TN__, si oui mettre $afficher = false ---

    if( $afficher ){
        echo $dirname.$file.'<br>';
    }
}
0
Merci pour ta reponse.
Pour ma recherche, j'ai trouver preg_match, et j'en ai vraiment chier pour decrire ce que je cherchais exactement.
De plus, je me suis rendu compte que je ne voulais pas non plus les Thumbs..
Plus ajout d'un Slash entre le dossier et le ficher, et retrait du nom du dossier simplement.
MAIS : CA MARCHE !! Enfin =)

Merci merci merci !

<?php 
$liste_rep = scandir("./"); 
 $i = 0; 
 $num = count($liste_rep); 
 while($i < $num)
{ 


    $dirname = $liste_rep[$i];
    $dir = opendir($dirname); 

    while($file = readdir($dir)) {
    if($file != '.' && $file != '..' && !is_dir($dirname.$file)){
	
$afficher = true;
if ((preg_match("/\bTN__\b/i", $file))||(preg_match("/\bThumbs\b/i", $file)))
 { 
$afficher = false; }

	  if( $afficher ){
        echo $dirname.'/'.$file.'<br>';
    }
	}
   }

     $i++; 
 } 


?>


Drak.
0