2009-12-08 8 views
1

어떻게 geven 문자열을 가져 와서 php에서 전체 경로와 파일명을 반환하는 재귀 디렉토리 탐색기를 작성할 수 있습니까?재귀 디렉토리 검색 자 PHP

+0

OOP이어야합니까? 'glob'을 사용하지 않으면 (http://php.net/manual/en/function.glob.php). 배열을 반환합니다. – brezanac

답변

3

PHP 함수 dir가 도움이됩니다. 이 워드 프로세서의 노트의 예입니다 내가 아래에 포함이있는이, 일을 보여줍니다 (온라인 포럼에서 Sojka 고하여 순 점)

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

...

<?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를 반복 할 수 있습니다 토르. 이것 봐 :

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

그런 다음 (array) $result 보통 '테스트' '/ 경로 /'에서 발견 된 모든 파일 이름을 포함해야합니다.

희망 하시겠습니까?)