4611577_3_939b_lignes-de-code-php_4f79cd53f304a46d897a10f5f4871322

PHP : méthode récursive pour parcourir et afficher un dossier et son contenu

Cette méthode permet de :

  • Parcourir un dossier sur un serveur web PHP,
  • Afficher son contenu hiérarchisé, par dossiers
  • Afficher les fichiers et le lien pour les télécharger
  • Afficher tout ça dans l’ordre alphabétique

Voici la méthode PHP :

// obtenir l'URL locale (méthode perso)
$localURL = Tools::get_urlLocal();

//=========================================
// Parcourt un dossier et affiche sous forme hiérarchisée
// les dossiers deviennent des titre
// les fichiers deviennent des liens pour télécharger le fichier
//=========================================
function parcourtDossier($chemin, $level) {
	global $localURL;

	if (is_dir($chemin)) {
		// c'est un dossier

		// ouvre le dossier 
		if ($handle = opendir($chemin)) {

			// liste de tout ce qu'on va trouver
			$dirFiles = array();

			// récupère la liste des fichiers/dossiers
			while (false !== ($entry = readdir($handle))) {
				$dirFiles[] = $entry;
			}

			// trie dans l'ordre alpha
			sort($dirFiles, SORT_NATURAL | SORT_FLAG_CASE);

			// affiche la liste triée
			foreach($dirFiles as $entry) {

				if ($entry != "." && $entry != "..") {

					if (is_dir($chemin.'/'.$entry)) {
						
						// affiche le nom du dossier
						if ($level == 0) {
							$b1 = '<div style="width:100%; background-color:#ddd; padding:1px; margin-top:20px;"><h2 style="padding-left:20px; ">';
							$b2 = '</h2></div>';
						}
						if ($level == 1) {
							$b1 = '<div style="width:100%; background-color:#eee; padding:1px; margin-top:15px;"><h4 style="padding-left:20px;">';
							$b2 = '</h3></div>';
						}
						if ($level >= 2) {
							$b1 = '<div style="width:100%; background-color:#f4f4f4; margin-top:10px;"><b style="padding-left:20px;">';
							$b2 = '</b></div>';
						}
						// rajouter des niveaux si besoin

						echo $b1;
						echo '<b>'.$entry.'</b>';
						echo $b2;

						// affiche le contenu du dossier
						echo '<div style="margin-left:60px; margin-top:4px;">';
						parcourtDossier($chemin.'/'.$entry, $level + 1);
						echo '</div>';
					}
					else {
						// $chemin est un un fichier
						// affiche un lien pour le télécharge
						echo '• <a href="'.$localURL.'kp-content/download/'.$chemin.'/'.$entry.'" download>'.$entry.'</a><br/>';
					}

				}
			}
			closedir($handle);
		}

	} else {
		// $chemin est un fichier
		// utilisé seulement dans le cas où on le paramètre est un nom de fichier
		if ($chemin != "." && $chemin != "..") {
			echo '<a href="'.$localURL.'kp-content/download/'.$chemin.'" download>'.$chemin.'</a><br/>';
		}
	}
}

parcourtDossier("chemin/du/dossier", 0);
PHP : Méthode pour parser un dossier et l'afficher

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *