서버에서 파일을 검색할 때 검색을 루트 폴더 이상으로 확장하여 하위 폴더 및 하위 폴더. 다음은 PHP의 glob 함수와 RecursiveDirectoryIterator를 사용하여 이를 달성하는 방법입니다.
Glob은 glob() 함수를 사용하여 제한된 형태의 재귀 검색을 제공합니다. 그러나 GLOB_BRACE와 같은 특정 옵션에 대한 지원은 부족합니다. 이 문제를 극복하기 위해 디렉터리 구조를 재귀적으로 탐색하고 일치하는 파일의 병합된 배열을 반환하는 사용자 정의 함수 rglob()을 사용할 수 있습니다.
function rglob($pattern, $flags = 0) { $files = glob($pattern, $flags); foreach (glob(dirname($pattern).'/*', GLOB_ONLYDIR|GLOB_NOSORT) as $dir) { $files = array_merge( [], ...[$files, rglob($dir . "/" . basename($pattern), $flags)] ); } return $files; }
재귀 검색을 위한 또 다른 옵션은 다음과 같습니다. RecursiveDirectoryIterator 클래스. 더욱 강력하고 확장 가능한 접근 방식을 제공합니다.
function rsearch($folder, $regPattern) { $dir = new RecursiveDirectoryIterator($folder); $ite = new RecursiveIteratorIterator($dir); $files = new RegexIterator($ite, $regPattern, RegexIterator::GET_MATCH); $fileList = array(); foreach($files as $file) { $fileList = array_merge($fileList, $file); } return $fileList; }
rglob() 및 rsearch() 모두 재귀적 파일 검색을 수행할 수 있습니다. RecursiveDirectoryIterator는 확장성 옵션을 통해 추가적인 유연성을 제공합니다. 둘 중 하나를 선택하는 것은 특정 요구 사항과 원하는 제어 수준에 따라 다릅니다.
위 내용은 PHP를 사용하여 하위 폴더에서 파일을 재귀적으로 검색하는 방법: Glob 및 RecursiveDirectoryIterator?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!