>백엔드 개발 >PHP 튜토리얼 >PHP에서 여러 하위 폴더의 파일을 검색하는 방법은 무엇입니까?

PHP에서 여러 하위 폴더의 파일을 검색하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-08 17:59:01883검색

How to Scan Multiple Subfolders for Files in PHP?

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는 모두 다음을 재귀적으로 검색하기 위한 실행 가능한 솔루션을 제공합니다. 여러 하위 디렉터리 내의 파일. 이들 중 선택은 애플리케이션의 특정 요구 사항에 따라 달라집니다.

위 내용은 PHP에서 여러 하위 폴더의 파일을 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.