LISTER LE CONTENU D'UN DOSSIER (AVEC SPÉCIFICATION)

Signaler
Messages postés
822
Date d'inscription
vendredi 25 mai 2001
Statut
Modérateur
Dernière intervention
1 août 2014
-
Messages postés
17
Date d'inscription
lundi 6 octobre 2003
Statut
Membre
Dernière intervention
24 décembre 2007
-
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/12923-lister-le-contenu-d-un-dossier-avec-specification

Messages postés
17
Date d'inscription
lundi 6 octobre 2003
Statut
Membre
Dernière intervention
24 décembre 2007

Moi ya une fonction que j'adore, c'est glob.
Parce que glob, c'est glop :)
--------------------------------------------

$array = glob("./classes/*.php");
if ($array)
{
foreach ($array as $iterator) {
//do something here;
}
}

--------------------------------------------
Messages postés
208
Date d'inscription
mardi 13 avril 2004
Statut
Membre
Dernière intervention
26 janvier 2009

pour un listage de répertoire, voir aussi code.aspx?id=24147: le code est plus court.
Messages postés
11
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
3 mai 2003

chez moi, ça ne marche pas quand je tente d'accéder à un sous-répertoire.

Voici une version adaptatée qui fonctionne et qui me semble plus efficace (pour n fichier je ne fais que n itérations).

<?
# liste le contenu d'un répertoire
# $typefichier=all: liste tous les répertoires et les fichiers
# $typefichier=fichier: liste tous les fichiers
# $typefichier=dossier: liste tous les dossiers
#
function listRep ($repertoire, $typefichier){
//Initialisation des variables
$result; //tableau de resultat

//valeur all par défaut
if ($typefichier=="")
$typefichier="all";

// test si c'est un repertoire
if (!(is_dir($repertoire)))
die("Ce n'est pas un répertoire");

//ouverture du dossier
$handle=opendir($repertoire);

$i=0;
//lecture du dossier
while ($fichier = readdir($handle)){
if ($fichier != "." && $fichier != ".."){
if (is_dir($repertoire.$fichier) && ($typefichier=="all" || $typefichier=="dossier")){
$result[$i++] = $fichier;
}
elseif (is_file($repertoire.$fichier)){
$tmp = pathinfo($fichier) ;
$extension = $tmp['extension'] ;
if ($typefichier=="all" || $typefichier=="fichier" || $typefichier==$extension) {
$result[$i++] = $fichier;
}
}
}
}

//fermeture du dossier
closedir($handle);
return ($result);
}
?>
Messages postés
6
Date d'inscription
dimanche 20 mai 2001
Statut
Membre
Dernière intervention
20 octobre 2004

Plus simple encore
avec serveur unix
exec("find path -type f -exec basename {} ;",$list);
Afficher les 8 commentaires