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.
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