note 59678 added to function.readdir
| From: | alban dot lopez at gmail dot com | 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