note 58120 added to ref.dir
| From: | josh_at_thenewfood_dot_com at osu1 dot php dot net | Date: | Tue, 25 Oct 2005 01:48:59 +0000 |
| Subject: | note 58120 added to ref.dir | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-97538@lists.php.net to get a copy of this message | ||
Small correction to Nicolas Merlet's searchdir() function. To allow unlimited depth ($maxdepth
= -1), the line
<?php elseif ( $d >=0 && $d < $maxdepth ) ?>
must be changed to
<?php elseif ( $d >=0 && ($d < $maxdepth || $maxdepth < 0) ) ?>
Corrected version:
<?php
// $path : path to browse
// $maxdepth : how deep to browse (-1=unlimited)
// $mode : "FULL"|"DIRS"|"FILES"
// $d : must not be defined
function searchdir ( $path , $maxdepth = -1 , $mode = "FULL" , $d = 0 )
{
if ( substr ( $path , strlen ( $path ) - 1 ) != '/' ) { $path .= '/' ; }
$dirlist = array () ;
if ( $mode != "FILES" ) { $dirlist[] = $path ; }
if ( $handle = opendir ( $path ) )
{
while ( false !== ( $file = readdir ( $handle ) ) )
{
if ( $file != '.' && $file != '..' )
{
$file = $path . $file ;
if ( ! is_dir ( $file ) ) { if ( $mode != "DIRS" ) { $dirlist[] = $file ; }
}
elseif ( $d >=0 && ($d < $maxdepth || $maxdepth < 0) )
{
$result = searchdir ( $file . '/' , $maxdepth , $mode , $d + 1 ) ;
$dirlist = array_merge ( $dirlist , $result ) ;
}
}
}
closedir ( $handle ) ;
}
if ( $d == 0 ) { natcasesort ( $dirlist ) ; }
return ( $dirlist ) ;
}
?>
----
Manual Page -- http://www.php.net/manual/en/ref.dir.php
Edit -- http://master.php.net/manage/user-notes.php?action=edit+58120
Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+58120&report=yes&reason=added+to+the+manual
Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+58120&report=yes&reason=bad+code
Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+58120&report=yes&reason=spam
Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+58120&report=yes&reason=useless
Delete: non-english -- http://master.php.net/manage/user-notes.php?action=delete+58120&report=yes&reason=non-english
Delete: already in docs -- http://master.php.net/manage/user-notes.php?action=delete+58120&report=yes&reason=already+in+docs
Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+58120&report=yes
Reject -- http://master.php.net/manage/user-notes.php?action=reject+58120&report=yes
Search -- http://master.php.net/manage/user-notes.php