Source for file Find.php
Documentation is available at Find.php
// +----------------------------------------------------------------------+
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2003 The PHP Group |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.02 of the PHP license, |
// | that is bundled with this package in the file LICENSE, and is |
// | available at through the world-wide-web at |
// | http://www.php.net/license/2_02.txt. |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | license@php.net so we can mail you a copy immediately. |
// +----------------------------------------------------------------------+
// | Author: Sterling Hughes <sterling@php.net> |
// +----------------------------------------------------------------------+
// $Id: Find.php,v 1.14 2005/06/03 08:11:18 tuupola Exp $
* Commonly needed functions searching directory trees
* @version $Id: Find.php,v 1.14 2005/06/03 08:11:18 tuupola Exp $
* @author Sterling Hughes <sterling@php.net>
* Search the current directory to find matches for the
* @param string $pattern a string containing the pattern to search
* @param string $dirpath a string containing the directory path
* @param string $pattern_type a string containing the type of
* pattern matching functions to use (can either be 'php' or
* @return array containing all of the files and directories
* matching the pattern or null if no matches
* @author Sterling Hughes <sterling@php.net>
function &glob($pattern, $dirpath, $pattern_type = 'php')
$pe = PEAR ::raiseError ("Cannot open directory");
$match_function = File_Find::_determineRegex ($pattern, $pattern_type);
while (false !== ($entry = @readdir($dh))) {
if ($match_function($pattern, $entry) &&
$entry != '.' && $entry != '..') {
return (count($matches) > 0 ) ? $matches : null;
* Map the directory tree given by the directory_path parameter.
* @param string $directory contains the directory path that you
* @return array a two element array, the first element containing a list
* of all the directories, the second element containing a list of all the
* @author Sterling Hughes <sterling@php.net>
/* TODO: make mapTree() statically callable */
/* clear the results just in case */
/* strip out tailing / to be consistent */
$directory = ereg_replace(DIRECTORY_SEPARATOR. '$', '', $directory);
$this->_dirs = array ($directory);
while (count($this->_dirs)) {
* Map the directory tree given by the directory parameter.
* @param string $directory contains the directory path that you
* @param integer $maxrecursion maximun number of folders to recursive
* @return array a multidimensional array containing all subdirectories
* and their files. For example:
* @author Mika Tuupola <tuupola@appelsiini.net>
$directory .= DIRECTORY_SEPARATOR;
while (false !== ($entry = @readdir($dh))) {
if ($entry != '.' && $entry != '..') {
while (list ($key, $val) = each($retval)) {
$path = $directory . $val;
$path = str_replace(DIRECTORY_SEPARATOR.DIRECTORY_SEPARATOR ,
DIRECTORY_SEPARATOR , $path);
if ($maxrecursion == 0 || $count < $maxrecursion) {
* Search the specified directory tree with the specified pattern. Return
* an array containing all matching files (no directories included).
* @param string $pattern the pattern to match every file with.
* @param string $directory the directory tree to search in.
* @param string $type the type of regular expression support to use, either
* @param bool $fullpath whether the regex should be matched against the
* full path or only against the filename
* @return array a list of files matching the pattern parameter in the the
* directory path specified by the directory parameter
* @author Sterling Hughes <sterling@php.net>
function &search($pattern, $directory, $type = 'php', $fullpath = true )
/* if called statically */
if (!isset ($this) || !is_a($this, "File_Find")) {
return $obj->search ($pattern, $directory, $type, $fullpath);
$match_function = File_Find::_determineRegex ($pattern, $type);
while (list (,$entry) = each($files)) {
if ($match_function($pattern,
$fullpath ? $entry : basename($entry))) {
* Determine whether or not a variable is a PEAR error
* @param object PEAR_Error $var the variable to test.
* @return boolean returns true if the variable is a PEAR error, otherwise
return PEAR ::isError ($var);
* internal function to build singular directory trees, used by
* @param string $directory name of the directory to read
function _build ($directory)
$pe = PEAR ::raiseError ("Cannot open directory");
while (false !== ($entry = @readdir($dh))) {
if ($entry != '.' && $entry != '..') {
$entry = $directory.DIRECTORY_SEPARATOR. $entry;
$entry = str_replace(DIRECTORY_SEPARATOR.DIRECTORY_SEPARATOR ,
DIRECTORY_SEPARATOR , $entry);
* internal function to determine the type of regular expression to
* use, implemented by File_Find::glob() and File_Find::search()
* @param string $type given RegExp type
* @return string kind of function ( "eregi", "ereg" or "preg_match") ;
function _determineRegex ($pattern, $type)
$match_function = 'preg_match';
$match_function = 'eregi';
$match_function = 'ereg';
Documentation generated on Mon, 11 Mar 2019 14:19:20 -0400 by phpDocumentor 1.4.4. PEAR Logo Copyright © PHP Group 2004.
|