glob을 사용하여 PHP에서 여러 하위 폴더 검색
PHP에서는 glob 함수를 사용하여 지정된 디렉터리 내의 파일을 검색할 수 있습니다. 그러나 여러 하위 디렉터리와 하위 디렉터리를 검색할 때는 추가 고려 사항이 필요합니다.
glob을 사용한 재귀 검색
한 가지 접근 방식은 glob의 재귀 기능을 사용하는 것입니다. 다음은 지정된 파일 패턴에 대해 재귀 검색을 수행하는 함수입니다:
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; }
이 함수를 사용하려면 루트 디렉터리와 파일 패턴을 인수로 제공하기만 하면 됩니다.
$result = rglob($_SERVER['DOCUMENT_ROOT'] . '/test.zip'); var_dump($result);
RecursiveDirectoryIterator를 사용한 대체 접근 방식
또 다른 옵션은 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; }
이 함수를 호출하려면:
$result = rsearch($_SERVER['DOCUMENT_ROOT'], '/.*\/test\.zip/')); var_dump($result);
glob과 RecursiveDirectoryIterator는 모두 여러 하위 디렉터리 내에서 파일을 반복적으로 검색하기 위한 실행 가능한 솔루션을 제공합니다. 이들 중 선택은 애플리케이션의 특정 요구 사항에 따라 다릅니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3