note 77534 deleted from function.readdir by nlopess
| From: | nlopess@php.net | Date: | Mon, 03 Sep 2007 11:58:54 +0000 |
| Subject: | note 77534 deleted from function.readdir by nlopess | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-130124@lists.php.net to get a copy of this message | ||
Note Submitter: alban dot lopez+php dot net at NOSPAM dot gmail dot com
----
Similar to glob() function with some parameter and sort by folders then by files.
<?php
var_export (DirSort ('./', 'dir', './'));
var_export (DirSort ('./', 'file'));
var_export (DirSort ('./'));
var_export (DirSort ('./', array('*.php', 'in*'), './'));
function ArrayMatch ($ArrayMask, $str)
{
foreach ($ArrayMask as $mask)
if (fnmatch($mask, $str)) return true;
return false;
}
function DirSort ($rep, $mask='all', $Prefixe='')
{
$type = array( 'dir' => true , 'file' => false);
$Lst = false;
if ($mask=='all')
{
$Lst1 = DirSort ($rep, 'dir', $Prefixe); // cree une liste ordonnee des repertoires
$Lst2 = DirSort ($rep, isset($_GET['match']) ?
explode(',',$_GET['match']) : 'file', $Prefixe); // cree une liste
ordonnee des fichiers ( isset($_GET['match']) ?
explode(',',$_GET['match']) : 'file' )
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; // resultat d'un dossier vide
}
elseif (is_readable($rep) && $dh = opendir($rep))
{
while (($f = readdir($dh)) !== false) // parcoure le contenu de Rep
{
if ($f != '.' && $f != '..') // ignore les dossiers '.' et
'..'
{
if (!is_array($mask)) // si on a demander tous le contenu (fichiers ou dossiers)
{
if ($type[$mask]==is_dir($rep.$f))
$Lst[] = $Prefixe.$f.(is_dir($rep.$f)?'/':''); // Liste un type de contenu
(repertoires ou fichiers)
}
elseif ( ArrayMatch($mask, $f) && is_file($rep.$f) )
$Lst[] = $Prefixe.$f; // Liste un type de contenu (fichier de d'extension demander)
}
}
closedir($dh);
}
if (is_array($Lst)) // si la liste n'est pas vide
{
sort($Lst, SORT_STRING); //classe le contenu
return array_values($Lst); // pour que les clef soit dans l'ordre...
}
else return false;
}
?>
See exemple of use on this project http://ajaxbrowser.free.fr/Docs/index.php