PHP를 사용하여 하위 폴더에서 파일을 재귀적으로 검색하는 방법: Glob 및 RecursiveDirectoryIterator?

Linda Hamilton
풀어 주다: 2024-11-08 21:44:02
원래의
870명이 탐색했습니다.

How to Recursively Search for Files in Subfolders with PHP: Glob vs. RecursiveDirectoryIterator?

PHP Glob: 하위 폴더에 있는 파일에 대한 재귀 검색

서버에서 파일을 검색할 때 검색을 루트 폴더 이상으로 확장하여 하위 폴더 및 하위 폴더. 다음은 PHP의 glob 함수와 RecursiveDirectoryIterator를 사용하여 이를 달성하는 방법입니다.

재귀가 포함된 Glob

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

재귀 검색을 위한 또 다른 옵션은 다음과 같습니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿