note 59678 deleted from function.readdir by nlopess
| From: | nlopess@php.net | Date: | Tue, 13 Dec 2005 18:28:22 +0000 |
| Subject: | note 59678 deleted from function.readdir by nlopess | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-100078@lists.php.net to get a copy of this message | ||
Note Submitter: alban dot lopez at gmail dot com
Reason: non-english
----
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;
}
?>