"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como verificar várias subpastas em busca de arquivos em PHP?

Como verificar várias subpastas em busca de arquivos em PHP?

Publicado em 2024-11-09
Navegar:420

How to Scan Multiple Subfolders for Files in PHP?

Verificando múltiplas subpastas em PHP com glob

Em PHP, a função glob pode ser utilizada para procurar arquivos dentro de um diretório especificado. No entanto, ao pesquisar em vários subdiretórios e subsubdiretórios, considerações adicionais são necessárias.

Pesquisa recursiva com glob

Uma abordagem é empregar os recursos recursivos de glob. Aqui está uma função que executa uma pesquisa recursiva para o padrão de arquivo especificado:

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;
}

Para usar esta função, simplesmente forneça o diretório raiz e o padrão de arquivo como argumentos:

$result = rglob($_SERVER['DOCUMENT_ROOT'] . '/test.zip');
var_dump($result);

Abordagem alternativa com RecursiveDirectoryIterator

Outra opção é usar a classe RecursiveDirectoryIterator. Aqui está uma função que aproveita esta classe para pesquisar recursivamente o padrão de arquivo especificado:

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;
}

Para invocar esta função:

$result = rsearch($_SERVER['DOCUMENT_ROOT'], '/.*\/test\.zip/'));
var_dump($result);

Tanto glob quanto RecursiveDirectoryIterator fornecem soluções viáveis ​​para pesquisa recursiva de arquivos em vários subdiretórios. A escolha entre eles depende das necessidades específicas da sua aplicação.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3