File_Find::search PHP Méthode

    function &search($pattern, $directory, $type = 'php', $fullpath = true, $match = 'files')
    {
        $matches = array();
        list($directories, $files) = File_Find::maptree($directory);
        switch ($match) {
            case 'directories':
                $data = $directories;
                break;
            case 'both':
                $data = array_merge($directories, $files);
                break;
            case 'files':
            default:
                $data = $files;
        }
        unset($files, $directories);
        $match_function = File_Find::_determineRegex($pattern, $type);
        reset($data);
        // check if empty string given (ok for 'shell' method, but bad for others)
        if ($pattern || $type != 'php' && $type != 'perl') {
            while (list(, $entry) = each($data)) {
                if ($match_function($pattern, $fullpath ? $entry : basename($entry))) {
                    $matches[] = $entry;
                }
            }
        }
        sort($matches);
        return $matches;
    }

Usage Example

    /**
     * Returns an array of available handlers containing
     * handler name -> info pairs.
     * @param $p_path
     * @return array
     */
    public static function availableHandlers($p_path = null)
    {
        if (is_null($p_path)) {
            $path = dirname(__FILE__) . DIR_SEP. 'cache';
        } else {
            $path = $p_path;
        }

        require_once(dirname(dirname(__FILE__)).'/include/pear/File/Find.php');
        $includeFiles = File_Find::search('/^TemplateCacheHandler_[^.]*\.php$/', $path, 'perl', false);
        $handlers = array();
        foreach ($includeFiles as $includeFile) {
            if (preg_match('/TemplateCacheHandler_([^.]+)\.php/', $includeFile, $matches) == 0) {
                continue;
            }
            require_once $includeFile;
            $handlerName = $matches[1];
            $className = "TemplateCacheHandler_$handlerName";
            if (class_exists($className)) {
                $cacheHandler = new $className;
                $handlers[$handlerName] = array(
                    'is_supported'=>$cacheHandler->isSupported(),
                    'file'=>"$path/TemplateCacheHandler_$handlerName.php",
                    'description'=>$cacheHandler->description());
            }
        }
        return $handlers;
    }
All Usage Examples Of File_Find::search