function globRecursive($find, $path = '.') { $dh = opendir($path); $found = glob("{$path}/{$find}"); while (($file = readdir($dh)) !== false) { if ($file === '..') { continue; } if ($file === '.') { $found = array_merge($found, glob("{$path}/{$find}")); } elseif (is_dir("{$path}/{$file}")) { $found = array_merge($found, globRecursive($find, "{$path}/{$file}")); } } closedir($dh); return $found; }
function globRecursive($Pattern, $Flags = 0) { // Search in the Current Directory $Return = glob($Pattern, $Flags); // FOREACHDIRECTORY // Search in ALL sub-directories. foreach (glob(dirname($Pattern) . '/*', GLOB_ONLYDIR | GLOB_NOSORT) as $Directory) { // This is a recursive function. // Usually, THIS IS VERY BAD. // For searching recursively however, // it does make some sense. if (strpos($Directory, '/_') === false) { $Return = array_merge($Return, globRecursive($Directory . '/' . basename($Pattern), $Flags)); } } // FOREACHDIRECTORY return $Return; }
function globRecursive($path, $find) { $dh = opendir($path); while (($file = readdir($dh)) !== false) { if (substr($file, 0, 1) == '.') { continue; } $rfile = "{$path}/{$file}"; if (is_dir($rfile)) { foreach (globRecursive($rfile, $find) as $ret) { (yield $ret); } } else { if (fnmatch($find, $file)) { (yield $rfile); } } } closedir($dh); }