找以下递归方面的内容。这种遍历文件夹的操作,基本用递归解决还是比较容易的。写过php遍历ftp文件的东西,不觉得太复杂,根据帮助手册的ftp函数说明就可以搞定了。

解决方案 »

  1.   

    ftp_rawlist($connect_id,'/',TRUE)
    就可以递归列出所有文件,如果第一个字母是D就是文件夹
      

  2.   

    example
    ---------------------------------------------------------------$values = array(
                             "sitename" => "abc.ru",
                             "ftpserver" => "u12345.ftp.masterhost.ru",
                             "ftpuser" => "u12345",
                             "ftppassword" => "mypassword",
                             "remotedir" => "abc.ru/www"
                           );
    function getAllFilesViaFTP($values){
       $beginTime = time();
       echo "connecting to ".$values['sitename']."\n";
       // set up a connection or die
       if (!$conn_id = ftp_connect($values['ftpserver'])) return ("can't connect to ".$values['ftpserver']."\n"); 
       // try to login
       if (!@ftp_login($conn_id, $values['ftpuser'], $values['ftppassword'])) echo "can't login to ".$values['sitename']." with entered ".$ftp_user." and password(...) \n";
       // get the file list for $values['remotedir']
       $fileList = ftp_rawlist($conn_id, $values['remotedir'], TRUE);
       // print_r($fileList);
       $fileList_c = count($fileList);
       $allFiles = $allFilesCount = $allUseFulFilesCount = null;
       $currentDir = $values['remotedir'];
       for ($i=0;$i<$fileList_c;$i++){
           // change current dir, if current array element is an empty line
           if (!$fileList[$i]) $currentDir = $fileList[$i+1];
           else{
               $allFilesCount++;
               $fileInfo = list() = explode(" ", $fileList[$i]);
               // print_r($fileInfo);
               $fileName = $fileInfo[count($fileInfo) - 1];
               if (preg_match("/\.php/", $fileName) or preg_match("/\.htm/", $fileName) or preg_match("/\.html/", $fileName)){
                   $allUseFulFilesCount++;
                   $allFiles[] = preg_replace("/:/", "", $currentDir)."/".$fileName;
               }
           }
       }
       // close the connection
       ftp_close($conn_id);
       // time
       $fullTime = time() - $beginTime;
       $result = array (
                               "allFilesCount" => $allFilesCount,
                               "allUseFulFilesCount" => $allUseFulFilesCount,
                               "fullTime" => $fullTime,
                               "fileList" => $allFiles
                               );
       return $result;
    }$fileList = getAllFilesViaFTP($values);
    print_r($fileList); 
      

  3.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【victor0910】截止到2008-06-26 17:08:46的历史汇总数据(不包括此帖):
    发帖数:6                  发帖分:120                
    结贴数:0                  结贴分:0                  
    未结数:6                  未结分:120                
    结贴率:0.00  %            结分率:0.00  %            
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html