note 101017 added to function.glob
| From: | arvin at sudocode dot net | Date: | Sat, 20 Nov 2010 16:20:42 +0000 |
| Subject: | note 101017 added to function.glob | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-174225@lists.php.net to get a copy of this message | ||
I made this non-recursive implementation for recursive glob with a depth parameter. The search is
done breadth-first and specifying -1 for the depth means no limit.
<?php
function bfglob($path, $pattern = '*', $flags = 0, $depth = 0) {
$matches = array();
$folders = array(rtrim($path, DIRECTORY_SEPARATOR));
while($folder = array_shift($folders)) {
$matches = array_merge($matches, glob($folder.DIRECTORY_SEPARATOR.$pattern, $flags));
if($depth != 0) {
$moreFolders = glob($folder.DIRECTORY_SEPARATOR.'*', GLOB_ONLYDIR);
$depth = ($depth < -1) ? -1: $depth + count($moreFolders) - 2;
$folders = array_merge($folders, $moreFolders);
}
}
return $matches;
}
?>
Parameters:
$path - path of folder to search
$pattern- glob pattern
$flags - glob flags
$depth - 0 for current folder only, 1 to descend 1 folder down, and so on. -1 for no limit.
----
Server IP: 69.147.83.197
Probable Submitter: 121.54.41.115
----
Manual Page -- http://www.php.net/manual/en/function.glob.php
Edit -- https://master.php.net/note/edit/101017
Del: integrated -- https://master.php.net/note/delete/101017/integrated
Del: useless -- https://master.php.net/note/delete/101017/useless
Del: bad code -- https://master.php.net/note/delete/101017/bad+code
Del: spam -- https://master.php.net/note/delete/101017/spam
Del: non-english -- https://master.php.net/note/delete/101017/non-english
Del: in docs -- https://master.php.net/note/delete/101017/in+docs
Del: other reasons-- https://master.php.net/note/delete/101017
Reject -- https://master.php.net/note/reject/101017
Search -- https://master.php.net/manage/user-notes.php