note 77534 deleted from function.readdir by nlopess

From: 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

« previous php.notes (#130124) next »