note 84638 deleted from function.scandir by cmb
| From: | cmb@php.net | Date: | Sun, 17 Nov 2019 09:05:07 +0000 |
| Subject: | note 84638 deleted from function.scandir by cmb | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-213118@lists.php.net to get a copy of this message | ||
Note Submitter: webmaster at asylum-et dot com
----
<?php
/**
* outputs all files and directories
* recursively starting with the given
* $base path. This function is a combination
* of some of the other snips on the php.net site.
* All are good but lacked one thing or another
* that I needed like .htaccess
* files get excluded with the one that checks to
* see if the first character is a . and omits
* that.
*
* @example rscandir(dirname(__FILE__).'/'));
* @param string $base
* @param array $omit
* @param array $data
* @return array
*/
function rscandir($base='', &$data=array()) {
$array = array_diff(scandir($base), array('.', '..')); # remove ' and ..
from the array */
foreach($array as $value) : /* loop through the array at the level of the supplied $base */
if (is_dir($base.$value)) : /* if this is a directory */
$data[] = $base.$value.'/'; /* add it to the $data array */
$data = rscandir($base.$value.'/', $data); /* then make a recursive call with the
current $value as the $base supplying the $data array to carry into the recursion */
elseif (is_file($base.$value)) : /* else if the current $value is a file */
$data[] = $base.$value; /* just add the current $value to the $data array */
endif;
endforeach;
return $data; // return the $data array
}
echo '<pre>'; var_export(rscandir(dirname(__FILE__).'/')); echo
'</pre>';
/*
Output:
array (
0 => '/path/to/web/.htaccess',
1 => '/path/to/web/foo/',
2 => '/path/to/web/foo/file.txt'
)
*/
?>