2012-10-31 88 views
0

我通過php的ftp連接連接到另一臺服務器。通過php ftp遠程遞歸搜索目錄

不過,我需要能夠提取所有HTML文件從它的Web根目錄,這是造成我有點頭疼......

我發現這個職位Recursive File Search (PHP)其中談到使用RecursiveDirectoryIterator功能然而,這是與自己的php腳本位於同一服務器上的目錄。

我已經受夠了寫我自己的功能,但不知道我有去是正確的......假設發送到方法的原始路徑是服務器的文檔根:

public function ftp_dir_loop($path){ 

    $ftpContents = ftp_nlist($this->ftp_connection, $path); 

    //loop through the ftpContents 
    for($i=0 ; $i < count($ftpContents) ; ++$i) 
     { 
      $path_parts = pathinfo($ftpContents[$i]); 

      if(in_array($path_parts['extension'], $this->accepted_file_types){ 

       //call the cms finder on this file 
       $this->html_file_paths[] = $path.'/'.$ftpContents[$i]; 

      } elseif(empty($path_parts['extension'])) { 

       //run the directory method 
       $this->ftp_dir_loop($path.'/'.$ftpContents[$i]); 
      } 
     } 
    } 
} 

有沒有人看過預製課程來做類似的事情?

+0

這應該這樣做,雖然NLIST()返回false像路徑錯誤,無法找到或者是一個文件,你應該檢查這一點。 –

+0

順便說一句,也許更可靠的方法來檢測目錄是通過使用「-al $路徑」作爲第二個參數到ftp_nlist()。 –

回答

1

您可以嘗試

public function ftp_dir_loop($path) { 
    $ftpContents = ftp_nlist($this->ftp_connection, $path); 
    foreach ($ftpContents as $file) { 
     if (strpos($file, '.') === false) { 
      $this->ftp_dir_loop($this->ftp_connection, $file); 
     } 
     if (in_array(pathinfo($file, PATHINFO_EXTENSION), $this->accepted_file_types)) { 
      $this->html_file_paths[$path][] = substr($file, strlen($path) + 1); 
     } 
    } 
} 
+0

我沒有看到將文件本身的路徑拋出的有用性。 –

+0

@Jack固定..... – Baba

+0

謝謝!非常感謝:) – John