Sto cercando di realizzare uno script che mi funga ma motore di ricerca all'interno di una data directory e rispettive sottocartelle.
A tal proposito ho implementare una funzione la quale mi faccia un cammino tra tutti i file e cartelle presenti in una data directory, il cui risultato (il nome dei file o cartelle) viene memorizzato all'interno di una array se questi coincide o contiene in parte la chiave di ricerca.


Codice PHP:
//ricerca file
$files listdir($path$key); 
Codice PHP:
/* Una funzione ricorsiva la quale restituisce tutti i file e cartelle contenuti nella directory $star_dir, il cui nominativo contenga, anche in parte, la $key cercata.*/
function listdir($start_dir$key) {
    
$files = array();
      if (
is_dir($start_dir)) {
            
$fh opendir($start_dir);
            while ((
$file readdir($fh)) !== false) {
                  
// cicla tra i file, saltando . e .., e fa uso di ricorsione se necessario
                  
if (strcmp($file'.')==|| strcmp($file'..')==0) continue;
                      
$filepath $start_dir '/' $file;
                      if ( 
is_dir($filepath) ){
                          if([
B]strpos($file,$key)[/B]){
                              
array_push($files$filepath);
                          }
//if
                          
$files array_merge($fileslistdir($filepath$key));
                      }else{
                          if([
B]strpos($file,$key)[/B]){
                              
array_push($files$filepath);
                          }
//if
                    
}//else
            
}//while
            
closedir($fh);
      } else {
            
//restituisce false se invocata una directory non valida
            
$files false;
      }
//else

  
return $files;

}
//listdir 
Il problema che nonstante abbia usato la funzione strpos($file,$key) per selezionare il nome del file che contenga, anche se in parte, la chiave $key, questi non seleziona tutti i file.
A titolo di esempio, si immaggini di voler trovare tutti i file il cui nome contenga la chiave 'search' e che i file da ricercare siano così distribuiti:

codice:
./
|-searchfile.php
|-serach_file.php
|-/images
     |-search.png
     |-top_search.png
quando eseguo l'istruzione
Codice PHP:
print_r($files); 
, al fine di verificare il contenuto della ricerca questi conterrà solo il file:

Codice PHP:
Array ( [0] => .//images/top_search.png ) 
non inserendo i file searchfile.php , serach_file.php , search.png. Come è possibile?