note 59678 added to function.readdir

From: Date: Tue, 13 Dec 2005 11:15:51 +0000
Subject: note 59678 added to function.readdir
Groups: php.notes 
Request: Send a blank email to php-notes+get-100049@lists.php.net to get a copy of this message
function DirSort ($rep, $t='all', $Prefixe='') // Renvoie la liste des dossiers ( de A à Z - $t='dir' ) ou fichiers ( de A à Z - $t='file' ) ou les deux ( $t='all' - dossiers de A à Z puis fichiers de A à Z) // $t peut aussi etre un tableau (en minuscule...) avec toutes les extansions a chercher, insensible a la case // ex: si $t=array('jpg','png','') alors on obtiend la liste des fichiers '*.jpg' , '*.png' et 'sans extansion' // le paramettre $Prefixe sera ajouter devat chaque nom de dossier retourner, par defaut DirSort() renvoy seulement le nom (basename()) de chaque element de $rep // mais vous pouvez recuperer l'URL complet de chaque fichier en donnant a $Prefixe la meme valeur que $rep ( $Prefixe == $rep ) <? echo "<pre>"; print_r(DirSort ("./", 'all')); echo "<hr>"; print_r(DirSort ("./", 'file')); echo "<hr>"; print_r(DirSort ("./", "dir","./")); echo "<hr>"; print_r(DirSort ("./", array("php","ico",""),"./")); echo "</pre>"; function DirSort ($rep, $t='all', $Prefixe='') { $type = array( "dir" => true , "file" => false); $Lst = false; if ($t=='all') { $Lst1 = DirSort ($rep, "dir"); // crée une liste ordonné des repertoires $Lst2 = DirSort ($rep, "file"); // crée une liste ordonné des fichiers if ($Lst2 || $Lst1) // si l'un des 2 n'est pas vide... return array_merge( $Lst1 ? $Lst1 : array(), $Lst2 ? $Lst2 : array() ); // alors on renvois la concatenation des 2 string else return false; } elseif ($dh = opendir($rep)) { while (($f = readdir($dh)) !== false) // parcoure le contenu de Rep { if (!ereg("^\.?\.+$", $f)) // esquive les dossier '.' et '..' { // $info=pathinfo($rep.$f); // recupaire l'extansion et le dossier parent $ext = pathinfo($rep.$f, PATHINFO_EXTENSION); $ShortURL=substr($rep,2); // supprime le debut d'url "./" if (!is_array($t)) { if ($type[$t]==is_dir($ShortURL.$f)) $Lst[] = $Prefixe.$f; // Liste un type de contenu (repertoires ou fichiers) } elseif ( in_array(strtolower ($ext),$t) && is_file($ShortURL.$f)) $Lst[] = $Prefixe.$f; // Liste un type de contenu (fichier de type demander) } } closedir($dh); } if (is_array($Lst)) // si la liste n'est pas vide { natcasesort($Lst); //classe le contenu return array_values($Lst); // pour que les clef soit dans l'ordre... } else return false; } ?> ---- Manual Page -- http://www.php.net/manual/en/function.readdir.php Edit -- http://master.php.net/manage/user-notes.php?action=edit+59678 Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+59678&report=yes&reason=added+to+the+manual Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+59678&report=yes&reason=bad+code Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+59678&report=yes&reason=spam Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+59678&report=yes&reason=useless Delete: non-english -- http://master.php.net/manage/user-notes.php?action=delete+59678&report=yes&reason=non-english Delete: already in docs -- http://master.php.net/manage/user-notes.php?action=delete+59678&report=yes&reason=already+in+docs Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+59678&report=yes Reject -- http://master.php.net/manage/user-notes.php?action=reject+59678&report=yes Search -- http://master.php.net/manage/user-notes.php

« previous php.notes (#100049) next »