Hola
No tuve tiempo para analizar profundamente cuál es el matching que estás realizando sobre el nombre del archivo y el string a buscar, pero de todas formas modifique mi pequeño tips
Función Recursiva para buscar archivos para que busque si el string aparece más de una vez en el nombre del archivo, de forma recursivo en todos los directorios hijos de la ruta principal.
Código PHP:
<?php
// Example recursive function that searches for files in a directory (including subdirectories recursively)
// by deerme.org
function search_files( $dir , &$files , $str )
{
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 , $str );
}
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 );
if ( substr_count( $file , $str ) )
{
$files[ dirname($dir.'/'.$file)."/".$file ] = filemtime( $dir.'/'.$file );
}
}
}
}
}
closedir($gd);
}
}
}
if ( $_REQUEST["path"] and $_REQUEST["search"] )
{
$path_search = $_REQUEST["path"];
$string_search = $_REQUEST["search"];
if ( is_dir( $path_search ) )
{
$files = array();
search_files($path_search, $files , $string_search );
print_r($files);
}
}
?>
Ejemplo buscar todos los archivos de /var/www (recursivamente) que tenga a lo menos más de una vez el string "gato"
search.php?path=/var/www&search=gato
A si que solo la debes modificar para realizar el matching que quieres.
Saludos.
Saludos