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

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

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.