Accueil > > > FONCTION RÉCURSIVE POUR GÉNÉRER UNE ARBORESCENCE DE FICHIERS AVEC FILTRES
FONCTION RÉCURSIVE POUR GÉNÉRER UNE ARBORESCENCE DE FICHIERS AVEC FILTRES
Information sur la source
Description
Cette fonction vas générer une arborescence des fichiers & dossiers de manière graphique avec la possibilité d'optimiser par des filtres l'affichage
Source
- <?php
- /* ************************************************************************ */
- // function listingDir par Nans Stefanini
- // http://nans.stefanini.free.fr
- // Fonction récursive permettant de générer une arborescence de fichiers
- // avec filtres
- // $path : chemin du dossier à lister
- // $ext_interdites : tableau des extensions interdites
- // $dir_interdits : tableau des noms de dossiers interdits
- // $file_interdits : tableau des fichiers interdits
- // $profondeur : nombre de dossier à explorer par rapport à $path
- // $profdep = 0 : ne pas toucher, valeur de départ
- /* ************************************************************************ */
-
- function listingDir($path, $ext_interdites, $dir_interdits , $file_interdits, $profondeur=9999, $profdep=0 ) {
-
-
- if (is_dir($path)) {
- if (substr($path, -1, 1) !='/') {
- $path .= '/';
- echo $path.'<br>';
- }
- }
-
- echo 'profdep='.$profdep.'<br />';
- //on compte le nb de / au lancement
- if ($profdep == 0) {
- $profdep= substr_count($path, '/');
- }
-
- if (is_dir($path)) {
- //on definit le nom du dossier à afficher
- if (substr($path, -1, 1) =='/') { //si ça finit par un slash on le vire pr avoir le nom du dossier
- $dirnam = substr($path, 0,(strlen($path)-1)); //on vire le dernier shash
- } else {
- $dirnam = substr($path, 0,(strlen($path))); //on garde le nom du dossier comme ça
- $path.= '/'; //et on ajoute un slash a la fin du path pr avoir d chemins ok
- }
- $dirnam = strrchr($dirnam, "/"); // on recup le nom du dernier dossier
- $dirnam = str_replace (array('/'), array(''), $dirnam); // on vire le 1er shash
- //echo 'yo='.$dirnam ;
- //echo '<br />';
-
- if(!in_array($dirnam, $dir_interdits)) { //on verrifie que le dossier fait pas partie des interdits
-
- echo '<strong><a href="#" onclick="if (document.getElementById(\'level'.$profondeur.$dirnam.'\').style.display!=\'block\') {document.getElementById(\'level'.$profondeur.$dirnam.'\').style.display=\'block\';} else { document.getElementById(\'level'.$profondeur.$dirnam.'\').style.display=\'none\' }">- '.$dirnam.'</a></strong><br /><div id="level'.$profondeur.$dirnam.'" style=" margin-left: 15px; display: none;">'."\n";
- if ($dh = @opendir($path)) {
- while (($file = readdir($dh)) !== false) {
- if (($file != '.') && ($file != '..') && ($file != '...')) {
-
- if (is_dir($path . $file)) {
- if (substr_count($path . $file, '/')-$profdep < $profondeur) {
-
-
- listingDir(($path . $file . '/'), $ext_interdites, $dir_interdits, $file_interdits, $profondeur, $profdep);
-
-
- }
- } else {
- //on chope l'extension et le nom du fichier
- $tabfile = explode('.', $file);
- $nomfile = $tabfile[0];
- $extfi = $tabfile[1];
-
- if(!in_array($extfi, $ext_interdites) && !in_array($file, $file_interdits)) { //on verif les extensions & fichiers interdits
- echo '<a href="'.$path . $file.'">'. $file.'</a><br>'."\n";
- }
- }
- }
- }
- closedir($dh);
-
- echo '</div>'."\n";
- }
- }
- }elseif (is_file($path)) {
- echo $path.'<br>';
- }
-
-
- }
-
- //ex
- listingDir('./dossier/', array('txt', 'sql', 'fla'), array('css', 'admin'), array('config.php', 'config.inc.php', 'desabo.html', 'formulaire.html'), 1);
-
- ?>
<?php
/* ************************************************************************ */
// function listingDir par Nans Stefanini
// http://nans.stefanini.free.fr
// Fonction récursive permettant de générer une arborescence de fichiers
// avec filtres
// $path : chemin du dossier à lister
// $ext_interdites : tableau des extensions interdites
// $dir_interdits : tableau des noms de dossiers interdits
// $file_interdits : tableau des fichiers interdits
// $profondeur : nombre de dossier à explorer par rapport à $path
// $profdep = 0 : ne pas toucher, valeur de départ
/* ************************************************************************ */
function listingDir($path, $ext_interdites, $dir_interdits , $file_interdits, $profondeur=9999, $profdep=0 ) {
if (is_dir($path)) {
if (substr($path, -1, 1) !='/') {
$path .= '/';
echo $path.'<br>';
}
}
echo 'profdep='.$profdep.'<br />';
//on compte le nb de / au lancement
if ($profdep == 0) {
$profdep= substr_count($path, '/');
}
if (is_dir($path)) {
//on definit le nom du dossier à afficher
if (substr($path, -1, 1) =='/') { //si ça finit par un slash on le vire pr avoir le nom du dossier
$dirnam = substr($path, 0,(strlen($path)-1)); //on vire le dernier shash
} else {
$dirnam = substr($path, 0,(strlen($path))); //on garde le nom du dossier comme ça
$path.= '/'; //et on ajoute un slash a la fin du path pr avoir d chemins ok
}
$dirnam = strrchr($dirnam, "/"); // on recup le nom du dernier dossier
$dirnam = str_replace (array('/'), array(''), $dirnam); // on vire le 1er shash
//echo 'yo='.$dirnam ;
//echo '<br />';
if(!in_array($dirnam, $dir_interdits)) { //on verrifie que le dossier fait pas partie des interdits
echo '<strong><a href="#" onclick="if (document.getElementById(\'level'.$profondeur.$dirnam.'\').style.display!=\'block\') {document.getElementById(\'level'.$profondeur.$dirnam.'\').style.display=\'block\';} else { document.getElementById(\'level'.$profondeur.$dirnam.'\').style.display=\'none\' }">- '.$dirnam.'</a></strong><br /><div id="level'.$profondeur.$dirnam.'" style=" margin-left: 15px; display: none;">'."\n";
if ($dh = @opendir($path)) {
while (($file = readdir($dh)) !== false) {
if (($file != '.') && ($file != '..') && ($file != '...')) {
if (is_dir($path . $file)) {
if (substr_count($path . $file, '/')-$profdep < $profondeur) {
listingDir(($path . $file . '/'), $ext_interdites, $dir_interdits, $file_interdits, $profondeur, $profdep);
}
} else {
//on chope l'extension et le nom du fichier
$tabfile = explode('.', $file);
$nomfile = $tabfile[0];
$extfi = $tabfile[1];
if(!in_array($extfi, $ext_interdites) && !in_array($file, $file_interdits)) { //on verif les extensions & fichiers interdits
echo '<a href="'.$path . $file.'">'. $file.'</a><br>'."\n";
}
}
}
}
closedir($dh);
echo '</div>'."\n";
}
}
}elseif (is_file($path)) {
echo $path.'<br>';
}
}
//ex
listingDir('./dossier/', array('txt', 'sql', 'fla'), array('css', 'admin'), array('config.php', 'config.inc.php', 'desabo.html', 'formulaire.html'), 1);
?>
Conclusion
Je cherchais à faire précisément ça. j'ai consulté quelques sources ici qui n'offraient pas assez de possibilités de paramétrage. J'ai donc entrepris d'optimiser tout ça à partir de plusieurs codes existants et de mon petit cerveau ;) VOili VOilo ... j'espère que ça vous servira ! @+
Historique
- 05 avril 2007 16:09:03 :
- correction d'un petit bug ...
- 05 avril 2007 17:06:20 :
- profondeur OK
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Lister tous les fichiers d'un dossier donné [ par lnp ]
Comment faire pour lister tous les fichiers d'un dossier donné En vue de supprimer les fichiers qui ne sont plus nécessaire au fonctionneme
Lecture d'un nom de fichier...2 [ par magicsmacks ]
Bonjour, J'avais demandais il y a qq jours ceci : " Bonjour, Je possède un dossier sur mon serveur dans lequel
LISTER LES FICHIERS D'UN DOSSIER ET EN FAIRE DES LIENS [ par djimson ]
bonsoir, j'ai pris un script pour lister les fichiers d'un dossiers et en faire des liens mais j'ai quelques petits soucis : 01 - Comment faire pour
3 deniers fichiers ajouté... [ par mailys ]
Bonjour, J'ai trouver un code me permettant de lister les 3 derniers fichiers ajoutés dans un dossier. Mon problème est que je n'arrive pas à trouver
Compter des fichiers [ par leoncap ]
Bonjour, j'utilise le script suivant pour compter le nombre de fichiers qu'il y a dans un dossier. Il fonctionne très bien sauf pour 0. Quand le dossi
lister contenu des fichiers contenus dans répoertoire et enregistrés dans une table [ par begueradj ]
Je repose cette question que j'ai déjà posée mais qui n'a pas reçu de réponse: J'aimerais lister le contenu d'un dossier dont les noms de fichiers so
Problème av listeur de répertoire [ par thedjpredator ]
Bonjour,J'ai commencé un site un php depuis peu, et j'ai quelques difficultés a comprendre certain code que parfoisj'ai chopé parci parla. Et la donc
lister un dossier puis comparer a une bdd [ par jphilippev ]
bonjour je cherche a recuperer tout les fichiers contenus dans un dossieret les comparer a la colonne correspondante de ma bddvoila jarrive bien a "ex
Protéger un dossier dans un serveur [ par oumelaid ]
Bonsoir, J'ai voulu créer un .htacces pour protéger le dossier dans le serveur j'ai crée les deux fichiers(.htaccess/.htpasswd) dans le répertoire
lister les dossier et non le contenu [ par zuddap ]
bonjour a tous, voila je cherche a lister tous les dossiers qui sont dans un dossier(parrent) ou il y a également des fichiers. Comme il est dit dans
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
SYSTEME D'AMISYSTEME D'AMI par moza2409
Cliquez pour lire la suite par moza2409
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|