递归目录搜索器PHP

时间:2009-12-08 12:56:35

标签: php oop recursion

如何编写递归目录搜索,该搜索采用给定的字符串并返回整个路径以及php中的文件名?

2 个答案:

答案 0 :(得分:3)

php函数dir会帮助你。

<强> http://php.net/manual/en/class.dir.php

在docs的笔记中有一个例子(由在线论坛网上的sojka)显示这样做,我已经包含在下面......

<?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;
}
?>

其他人在同一页面上有很多其他类似的例子,所以找一个你喜欢的并从那里去的人......

答案 1 :(得分:0)

您可以使用RecursiveDirectoryIterator迭代dirctory。 看看这个:

$search_query = "test";
$directory = new RecursiveDirectoryIterator('/path/');
$iterator = new RecursiveIteratorIterator($directory);
$result = new RegexIterator($iterator, '/^.+\'.$search_query.'$/i', RecursiveRegexIterator::GET_MATCH);

然后(array) $result通常应该包含所有文件名,其中&#39; test&#39;在&#39; / path /&#39;。

下找到

希望它有所帮助;)