Lister les dossiers, sous-dossiers et nombre de fichiers

Contenu du snippet

Une petite source sans prétention qui pourrait très bien figurer dans les snippets mais étant une page complète, je la poste ici.

Elle vient compléter ce qui a déjà été publié dans le sujet mais va un peu plus loin...

Elle est entièrement conforme aux normes XHTML 1.1 Strict (ce n'est pas très dur avec si peu de code).

Source / Exemple :


<?php
// repertoires/extensions à ignorer dans les dossiers
$foldersListIgnore = array ('.','..');
$extListAccept = array ('php','php3','php4','htm','html');

// recuperation des dossiers
$handle=opendir('.');
$tableau='';
$nbr_files=0;

// boucle sur les éléments du dossier
while ($file = readdir($handle)) 
{
	// teste s'il s'agit d'un élément autorisé
	if (!in_array($file,$foldersListIgnore)) {
		// teste s'il s'agit d'un dossier
		if (is_dir($file)) {
			$subfolder=opendir($file);
			$ext=substr($subfolder,-3);
			// teste s'il y a des sous-dossiers et combien de sous-items il y a
			while ($subfolderContents = readdir($subfolder)) 
			{
				// teste les fichiers du sous-dossiers et leur extension
				if (!in_array($subfolderContents,$foldersListIgnore)) {
				$listing[$subfolder]=$nbr_files;
				}
				$nbr_files++;
			}
			$nbr_files =($nbr_files-2);
			// sous-résultat
			$folderContents .= '<li>'.$k.'<a href="'.$file.'/">'.$file.'</a>&nbsp;('.$nbr_files.')</li>';
			$nbr_files = 0;
		}
		// teste s'il s'agit d'un fichier
		else if (is_file($file)) {
			// extrait l'extension du fichier
			$ext = substr($file,-4);
			if (stristr($ext, '.') === FALSE) {
				$ext = $ext;
			}
			else {
				$ext = substr($ext,-3);
			}
			// vérifie si l'extension est autorisée dans le listing
			if (in_array($ext,$extListAccept)) {
				$file_name = $file;
				// sous-résultat
				$folderContents .= '<li>'.$k.'<a href="'.$file_name.'">'.$file_name.'</a></li>';
			}
		}
		// teste s'il s'agit d'un fichier
		else {
			echo 'format de fichier non reconnu';
		}
	}
}
// ferme le parcours du dossier
closedir($handle);

// teste si la liste des dossiers n'est pas nulle
if (!isset($folderContents))
	$folderContents = 'le dossier est vide';
?>
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html lang="en" xml:lang="en">
<head>
	<title><?php echo $_SERVER['PHP_SELF'];?></title>
	<meta http-equiv="Content-Type" content="txt/html; charset=utf-8" />
</head>
<body>
	<h2><?php echo $_SERVER['PHP_SELF'];?></h2>
	<ul>
		<?php echo $folderContents;?>
	</ul>
</body>
</html>

Conclusion :


Je suis ouvert aux critiques constructives.

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.