note 77534 added to function.readdir
| From: | alban dot lopez+php dot net at NOSPAM dot gmail dot com | Date: | Sun, 02 Sep 2007 20:26:41 +0000 |
| Subject: | note 77534 added to function.readdir | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-130106@lists.php.net to get a copy of this message | ||
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
----
Server IP: 194.246.101.61
Probable Submitter: 81.56.255.180
----
Manual Page -- http://www.php.net/manual/en/function.readdir.php
Edit -- https://master.php.net/note/edit/77534
Del: integrated -- https://master.php.net/note/delete/77534/integrated
Del: useless -- https://master.php.net/note/delete/77534/useless
Del: bad code -- https://master.php.net/note/delete/77534/bad+code
Del: spam -- https://master.php.net/note/delete/77534/spam
Del: non-english -- https://master.php.net/note/delete/77534/non-english
Del: in docs -- https://master.php.net/note/delete/77534/in+docs
Del: other reasons-- https://master.php.net/note/delete/77534
Reject -- https://master.php.net/note/reject/77534
Search -- https://master.php.net/manage/user-notes.php