2009-12-08 77 views
1

我怎么能写,需要一个geven字符串,返回整个路径加在php文件名的recursice目录搜索?递归目录searcer PHP

+0

是否必须是OOP?如果不使用'glob'(http://php.net/manual/en/function.glob.php)。它返回一个数组。 – brezanac

回答

3

PHP函数dir会帮助你。

http://php.net/manual/en/class.dir.php

有一个在文档的音符一个例子(通过在线论坛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; 
} 
?> 

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

+0

但这并不需要像getTreeFolders($ filename,$ path)那样的参数文件名 – streetparade

+0

我提供的链接上有很多示例,它们对目录结构执行大量不同的递归搜索。 –

0

你可以使用RecursiveDirectoryItera迭代通过dirctory TOR。 看看这个:

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

然后(array) $result应该通常包含在“测试”是在“/路径/”中找到的所有文件名。

希望它帮助;)