"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 puedo usar Glob para buscar un archivo específico en subcarpetas?

¿Cómo puedo usar Glob para buscar un archivo específico en subcarpetas?

Publicado el 2025-03-13
Navegar:740

How Can I Use glob to Search for a Specific File in Subfolders?

php Glob: Explore subcarpetas para un archivo específico

buscar una amplia gama de archivos dispersos en diferentes carpetas y subcarpetas puede ser una tarea desalentadora. Sin embargo, la función Glob de PHP proporciona una solución versátil para abordar este desafío.

Su intento inicial implicó usar Glob para buscar dentro del directorio raíz. Para extender su alcance más allá de la raíz, considere los siguientes dos enfoques:

1. Glob recursivo con la función RGLOB:

La función RGLOB mejora las capacidades del globo al habilitar las búsquedas recursivas. Desciende recursivamente a subdirectorios, devolviendo todos los archivos coincidentes. Por ejemplo:

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

2. Directorio recursivo iterador:

La clase RecursiveDirectorator es otra opción para la búsqueda de archivos recursivos. Proporciona un enfoque más flexible y orientado a objetos:

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

ambos enfoques pueden escanear efectivamente las subcarpetas para el archivo especificado. Elija el que mejor se adapte a los requisitos y preferencias de su proyecto.

Ú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