Lister les fichiers d'un dossier et en faire des liens ( meilleure version )

Soyez le premier à donner votre avis sur cette source.

Snippet vu 56 347 fois - Téléchargée 27 fois

Contenu du snippet

Fonction basique qui affiche les fichiers et les sous-dossiers (mais pas leur contenu) d'un dossier, avec des liens créés automatiquement.
Les résultats dans cette version sont triés alphabétiquement (et insensiblement à la casse) (en fait on l'a demandé sur le forum alors je réponds ;) )

Source / Exemple :


<?php

function listing($repertoire){

	$fichier = array();

	if (is_dir($repertoire)){

		$dir = opendir($repertoire);                              //ouvre le repertoire courant désigné par la variable
		while(false!==($file = readdir($dir))){                             //on lit tout et on récupere tout les fichiers dans $file

			if(!in_array($file, array('.','..'))){            //on eleve le parent et le courant '. et ..'

				$page = $file;                            //sort l'extension du fichier
				$page = explode('.', $page);
				$nb = count($page);
				$nom_fichier = $page[0];
				for ($i = 1; $i < $nb-1; $i++){
					$nom_fichier .= '.'.$page[$i];
				}
				if(isset($page[1])){
					$ext_fichier = $page[$nb-1];
					if(!is_file($file)) { $file = '/'.$file; }
				}
				else {
					if(!is_file($file)) { $file = '/'.$file; }            //on rajoute un "/" devant les dossier pour qu'ils soient triés au début
					$ext_fichier = '';
				}

				if($ext_fichier != 'php' and $ext_fichier != 'html') {        //utile pour exclure certains types de fichiers à ne pas lister
					array_push($fichier, $file);
				}
			}
		}
	}

	natcasesort($fichier);                                    //la fonction natcasesort( ) est la fonction de tri standard sauf qu'elle ignore la casse

	foreach($fichier as $value) {
			echo '<a href="'.rawurlencode($repertoire).'/'.rawurlencode(str_replace ('/', '', $value)).'">'.$value.'</a><br />';
	}

}

//exemple d'utilisation :

listing('.');        //chemin du dossier

?>

Conclusion :


Je reprends ici une source d'il y a trois mois en l'écrivant proprement et en enlevant les lignes inutiles, en corrigeant les bugs, en la rendant plus efficace (au niveau des noms de fichiers tels "fichier.zip.rar", des fichiers sans extension, des répertoires avec un point dans le nom) et en triant les résultats comme on veut (utile pour les serveurs comme Free où l'affichage est aléatoire).
Cette version épurée d'une autre source s'assume clairement en tant que non-récursive, mais reste facilement adaptable. c'est tout

A voir également

Ajouter un commentaire

Commentaires

Messages postés
3
Date d'inscription
mardi 25 mars 2008
Statut
Membre
Dernière intervention
3 décembre 2010

Je suis tombé sur ajaxplorer... Il est au top :) Par contre, un peu galère à paraméter et bcp de lenteurs mais l'interface est genial
Messages postés
1
Date d'inscription
mercredi 8 novembre 2006
Statut
Membre
Dernière intervention
3 décembre 2010

Bonjour, ce script marche très bien avec Internet Explorer, par contre une fois le listing affiché, Firefox lui n'ouvre pas les liens quand on clic sur un répertoire. Avez-vous une réponse à m'apporter ? :) D'avance merci
Messages postés
3
Date d'inscription
mardi 25 mars 2008
Statut
Membre
Dernière intervention
3 décembre 2010

Merci de ta réponse ;-)

Effectivement, je suis tombé sur www.jbc-explorer.info qui est vraiment top !!

J'ai cependant un petit bug mais je vais poster sur leur forum
Merci à toi
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Salut Leboubou, il est possible de faire n'importe quoi mais je ne travaille plus sur cette source. Ce ne serait pas difficile en tout cas, essaie :)
Messages postés
3
Date d'inscription
mardi 25 mars 2008
Statut
Membre
Dernière intervention
3 décembre 2010

Salut Evangun

Y a-t-il une solution pour avoir un affichage un peu plus "moderne" ?
Avec la possibilité de faire un retour en arrière (dossier parent) ?
Afficher les 62 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.