2010-03-07 44 views
8

tôi có chức năng này để trả lại full directory tree:PHP đường dẫn thư mục đệ quy

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 

}

nhưng những gì tôi muốn làm là để tìm kiếm một tập tin/thư mục và gửi lại là con đường, làm thế nào tôi có thể làm việc đó đi? bạn có một chức năng như vậy hay bạn có thể cho tôi một số lời khuyên về cách làm điều này?

Trả lời

0

bạn có một chức năng như vậy hoặc bạn có thể cho tôi một số lời khuyên về cách thực hiện điều này?

Có, tôi có.

Tôi thực sự đã hỏi một câu hỏi tương tự vào sáng sớm hôm nay, nhưng tôi đã tìm ra. Vấn đề tôi gặp phải là tên tệp. và .. được trả về bởi readdir() và chúng gây ra vấn đề khi cố gắng opendir() với chúng. Khi tôi lọc chúng ra, đệ quy của tôi hoạt động hoàn hảo. Bạn có thể muốn sửa đổi định dạng trong đó nó xuất ra các thư mục phù hợp với tìm kiếm. Hoặc sửa đổi nó để xuất tất cả các tập tin và thư mục. Tìm một hình ảnh cho "go.jpg" và dùng thử.

Tôi không thể tìm thấy bài đăng của mình để thông báo rằng tôi đã tìm thấy giải pháp.

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; 
    } 
Các vấn đề liên quan