2009-12-08 73 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應該通常包含在「測試」是在「/路徑/」中找到的所有文件名。

希望它幫助;)