Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
递归目录searcerphp_Php_Oop_Recursion - Fatal编程技术网

递归目录searcerphp

递归目录searcerphp,php,oop,recursion,Php,Oop,Recursion,我如何编写一个递归目录搜索程序,它接受一个geven字符串并返回整个路径加上php中的文件名?php函数dir将帮助您 在文档的注释中有一个例子(sojka在在线论坛dot net上)说明了这一点,我已经在下面介绍了这个例子 <?php public static function getTreeFolders($sRootPath = UPLOAD_PATH_PROJECT, $iDepth = 0) { $iDepth++; $aDirs = array();

我如何编写一个递归目录搜索程序,它接受一个geven字符串并返回整个路径加上php中的文件名?

php函数
dir
将帮助您

在文档的注释中有一个例子(sojka在在线论坛dot net上)说明了这一点,我已经在下面介绍了这个例子

<?php
public static function getTreeFolders($sRootPath = UPLOAD_PATH_PROJECT, $iDepth = 0) {
      $iDepth++;
      $aDirs = array();
      $oDir = dir($sRootPath);
      while(($sDir = $oDir->read()) !== false) {
        if($sDir != '.' && $sDir != '..' && is_dir($sRootPath.$sDir)) {
          $aDirs[$iDepth]['sName'][] = $sDir;
          $aDirs[$iDepth]['aSub'][]  = self::getTreeFolders($sRootPath.$sDir.'/',$iDepth);
        }
      }
      $oDir->close();
      return empty($aDirs) ? false : $aDirs;
}
?>


同一页面上有许多其他人提供的类似示例,因此请找到一个您喜欢的示例,然后从那里开始……

您可以使用递归DirectoryIterator通过目录进行迭代。 看看这个:

$search_query = "test";
$directory = new RecursiveDirectoryIterator('/path/');
$iterator = new RecursiveIteratorIterator($directory);
$result = new RegexIterator($iterator, '/^.+\'.$search_query.'$/i', RecursiveRegexIterator::GET_MATCH);
然后,
(array)$result
通常应该包含在“/path/”下找到“test”的所有文件名


希望有帮助;)

但这并不需要像getTreeFolders($filename,$path)那样将文件名作为参数。在我提供的链接上有很多例子可以对目录结构执行许多不同的递归搜索。它必须是OOP吗?如果没有,请使用
glob
()。它返回一个数组。