2010-03-07 22 views
8

mam tej funkcji do zwrotu full directory tree:PHP ścieżka katalogu rekurencyjne

function getDirectory($path = '.', $level = 0){ 

$ignore = array('cgi-bin', '.', '..'); 
// Directories to ignore when listing output. Many hosts 
// will deny PHP access to the cgi-bin. 

$dh = @opendir($path); 
// Open the directory to the handle $dh 

while(false !== ($file = readdir($dh))){ 
// Loop through the directory 

    if(!in_array($file, $ignore)){ 
    // Check that this file is not to be ignored 

     $spaces = str_repeat(' ', ($level * 4)); 
     // Just to add spacing to the list, to better 
     // show the directory tree. 

     if(is_dir("$path/$file")){ 
     // Its a directory, so we need to keep reading down... 

      echo "<strong>$spaces $file</strong><br />"; 
      getDirectory("$path/$file", ($level+1)); 
      // Re-call this same function but on a new directory. 
      // this is what makes function recursive. 

     } else { 

      echo "$spaces $file<br />"; 
      // Just print out the filename 

     } 

    } 

} 

closedir($dh); 
// Close the directory handle 

}

ale to, co chcę zrobić, to szukać pliku/folderu i powrócić to ścieżka, jak mogę Zrób to? masz taką funkcję lub możesz dać mi kilka wskazówek, jak to zrobić?

Odpowiedz

0

masz taką funkcję lub możesz dać mi kilka wskazówek jak to zrobić to?

Tak, robię.

Właściwie zadałem podobne pytanie wcześniej dziś rano, ale rozumiem. Problem w tym, że mam nazwy plików. i .. są zwracane przez readdir() i powodują problemy przy próbie opendir() z nimi. Kiedy je odfiltrowałem, moja rekursja działała idealnie. Możesz zmodyfikować format, w którym wyprowadza katalogi pasujące do wyszukiwania. Lub zmodyfikuj go, aby wypisać wszystkie pliki i katalogi. Znajdź obraz dla "go.jpg" i wypróbuj go.

Nie mogę znaleźć mojego ogłoszenia o znalezieniu rozwiązania.

define ('HOME', $_SERVER['DOCUMENT_ROOT']); 

    function searchalldirectories($directory, $seachterm, $maxrecursions, $maxopendir){ 
     $dircontent= ''; 
     $dirs= array(); 
     if ($maxopendir > 0){ 
      $maxopendir--; 
      $handle= opendir(HOME.'/'.$directory); 
      while (($dirlisting= readdir($handle)) !== false){ 
       $dn= ''; $fn= '&nbsp;&nbsp;File'; 
       if (is_dir(HOME.'/'.$directory.'/'.$dirlisting) && $maxrecursions>0 && strpos($dirlisting, '.')!==0){ 
        $dirs[ count($dirs)]= $directory.'/'.$dirlisting; 
        $dn= '/'; $fn= 'Dir'; 
       }       
       if (stripos($dirlisting, $seachterm) !== false){ 
        $dircontent.= '<input type="image" src="go.jpg" name="cmd" value="home:/'.$directory.'/'.$dirlisting.'"> '.$fn.':// <b>'.$directory.'/'.$dirlisting.$dn.'/</b><br>'; 
       } 
      } 
      closedir($handle); 
      for ($i=0; $i<count($dirs); $i++){ 
       $dircontent.= searchalldirectories($dirs[$i], $seachterm, ($maxrecursions-1), $maxopendir); 
      } 
     } 
     return $dircontent; 
    } 
Powiązane problemy