Re: Recursive Directory Listing

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Joe Schaeffer wrote:
Joe,

Here is a simplified recursive version of your above statement.

<?php
$dir = '.';
function displayDir($dir='.') {
       $show = FALSE;
       $results = glob($dir.'/*');
       foreach ( $results AS $entry ) {
               if ( is_dir($entry) && !in_array($entry, array('.', '..')) ) {
                       $dirs[] = $entry;
                       $show = TRUE;
               }
       }
       if ( $show ) {
               echo '<ul>';
               foreach ( $dirs AS $entry ) {
                       echo '<li>', basename($entry);
                       displayDir($entry);
                       echo '</li>';
               }
               echo '</ul>';
       }
}
displayDir($dir);
?>
Hope this helps
--
Jim Lucas

Excellent, Jim. Thanks very much for your help.

At the risk of straying too far from the original
subject/call-for-help, is there a way to flag the *first* time the
function runs through a <ul> creation? Though my design doesn't call
for it now, I could see the value of styling the first level
separately than the sub-directories.
Hi,

This one makes use of the SPL and can handle a filter. Maybe not the cleanest way, but good enough for me.

function DirectoryIterator($path, $filter = FALSE) {

   $files = new RecursiveDirectoryIterator($path);

   foreach($files as $file) {

       if ($filter !== FALSE) {

           if (array_search($file->getFileName(), $filter) !== FALSE) {

               continue;
           }
       }

       if ($file->isDir()) {

           $name = $file->__toString();

echo str_replace(chr(92), chr(92).chr(92), $name).chr(92).chr(92)."\n"; DirectoryIterator($name, $filter);
       }
   }
}

$path = 'C:\\projects\\sites\\www.example.com\\';

DirectoryIterator($path, array('.svn'));



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux