"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo escanear varias subcarpetas en busca de archivos en PHP?

¿Cómo escanear varias subcarpetas en busca de archivos en PHP?

Publicado el 2024-11-09
Navegar:812

How to Scan Multiple Subfolders for Files in PHP?

Escaneo de múltiples subcarpetas en PHP con glob

En PHP, la función glob se puede utilizar para buscar archivos dentro de un directorio específico. Sin embargo, al buscar en varios subdirectorios y subdirectorios, se necesitan consideraciones adicionales.

Búsqueda recursiva con glob

Un enfoque es emplear las capacidades recursivas de glob. Aquí hay una función que realiza una búsqueda recursiva para el patrón de archivo 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 función, simplemente proporcione el directorio raíz y el patrón de archivo como argumentos:

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

Enfoque alternativo con RecursiveDirectoryIterator

Otra opción es utilizar la clase RecursiveDirectoryIterator. Aquí hay una función que aprovecha esta clase para buscar recursivamente el patrón de archivo 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 función:

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

Tanto glob como RecursiveDirectoryIterator proporcionan soluciones viables para la búsqueda recursiva de archivos dentro de múltiples subdirectorios. La elección entre ellos depende de las necesidades específicas de su aplicación.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3