note 101017 added to function.glob

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

« previous php.notes (#174225) next »