función recursiva para buscar archivos en php
A veces es necesario buscar archivo recursivamente en un directorio, podemos utilizar herramientras como find o reinventar la rueda xD, el siguiente ejemplo es una función recursiva para la busqueda de archivos en PHP.
<?php // Example recursive function that searches for files in a directory (including subdirectories recursively) // by deerme.org function search_files( $dir , &$files ) { if (is_dir($dir)) { if ($gd = opendir($dir)) { while (($file = readdir($gd)) !== false) { if ( $file != '.' AND $file != '..' ) { // ¿ Dir or File ? if ( is_dir( $dir.'/'.$file ) ) { search_files( $dir.'/'.$file , $files ); } else { // Ready File if ( is_file( $dir.'/'.$file) ) { //$size = filesize( $dir.'/'.$file ); //$md5 = md5_file( $dir.'/'.$file ); $files[ dirname($dir.'/'.$file)."/".$file ] = filemtime( $dir.'/'.$file ); } } } } closedir($gd); } } } $files = array(); search_files("/var/tmp", $files ); print_r($files); ?>
Si creo un buscador es necesario poner exactamente el nombre del archivo para que lo pueda localizar con este script???
Josue
Todo depende del buscador, lo más normal es buscar si el nombre del archivo contiene el patrón que estas buscando.
Por lo tanto, la función debería tener otro parámetro más (patrón del archivo) y en el bloque donde verificamos que es un archivo real, puedes agregar una condición si el nombre del archivo cumple con el patrón, algo como preg_match(“/”.$filepattern.”/”, $dir.’/’.$file )
De esta manera, el arreglo tendría al path de todos los archivos que cumplen la condición de busqueda.
como que me recomiendas, necesito hacer una busqueda de archivos, he usado glob() pero el detalle es que me devuelve la ruta del archivo no nada mas el nombre del archivo, ademas que dibuja el arreglo, intentaria con preg_match pero veo que hace lo mismo dibuja un arreglo, que me recomiendas para hacer mi busqueda pero solo obtener la lista de archivos encontrados sin sus rutas ni que dibuje ningun arreglo