用於列出文件和目錄的PHP代碼。PHP中的單獨文件和目錄
$buff = ftp_nlist($conn_id,$dir);
$ buff是兩個文件&目錄的數組。
有沒有辦法獲得2個獨立的數組,1只包含文件和其他只是目錄。
用於列出文件和目錄的PHP代碼。PHP中的單獨文件和目錄
$buff = ftp_nlist($conn_id,$dir);
$ buff是兩個文件&目錄的數組。
有沒有辦法獲得2個獨立的數組,1只包含文件和其他只是目錄。
你可以遍歷數組,並檢查wheter該項目是一個目錄使用函數像
function ftp_is_dir($conn_id, $dir) {
if (ftp_chdir($conn_id, $dir)) {
ftp_chdir($conn_id, '..');
return true;
} else {
return false;
}
}
編輯:
另一種可能性是
<?php
function is_ftp_dir($file, $conn_id){
if(ftp_size($conn_id, $file) == '-1'){
return true;
}else{
return false;
}
}
?>
請注意,並非每個ftp服務器都支持ftp_size()。
directory
的目錄中列出。 該參數還可以包含參數,例如。 ftp_nlist($ conn_id,「-la/your/dir」);請注意,此參數不會轉義,因此可能會出現包含空格和其他字符的文件名問題。
因此執行ftp_nlist
兩次:一次提供只給出文件的參數,然後提供只給出目錄的參數。 這將依靠系統所在的FTP服務器站點。
或者,您可以使用使用ftp_chdir
的this more verbose solution或使用ftp_size
的this one。
你試過ftp_rawlist()
?該函數返回一個包含像行的數組:
06-21-11 01:49PM <DIR> 01
06-21-11 02:20PM <DIR> 02
06-21-11 03:33AM 456 default.html
06-21-11 04:59PM 123 robots.txt
或者:
drwxr-xr-x 12 ftp ftp 4096 Mar 25 1999 ACS
drwxr-xr-x 14 ftp ftp 4096 Mar 18 2001 ATHENA
drwxr-xr-x 2 ftp ftp 4096 Jul 10 1998 XNeXT
drwxr-xr-x 3 ftp ftp 4096 Jul 10 1998 elib
drwxrwxr-x 349 ftp ftp 98304 Jul 02 06:30 gnu
drwxr-xr-x 3 ftp ftp 4096 Jul 10 1998 lpf
-rw-r--r-- 1 ftp ftp 3448992 Oct 16 2003 ls-lR
drwxr-xr-x 2 ftp ftp 4096 Jul 10 1998 palladium
drwxr-xr-x 2 ftp ftp 4096 Jul 10 1998 palladium2
drwxr-xr-x 2 ftp ftp 4096 Jul 10 1998 virus
從這點出發,你可以使用ftp_systype()
函數來確定如何解釋上述迴應。
或者使用啓發式例如在Windows上,目錄將包含字符串<DIR>
,在Linux上您應該找到以d
開頭的每個目錄,然後是rwxrwxrwx
之類的內容。
可以對您需要的文件進行圖案匹配。如果您能夠依賴具有擴展名和目錄的文件,而不使用「。」在,你可以得到所有的文件名,而只是像這樣:
$filenames = ftp_nlist($conn_id, '*.*');
沒有,ftp_nlist只返回名稱的一個列表,你不能說,如果那些目錄或文件。您可能需要查看FTP網址封裝器:http://php.net/manual/en/wrappers.ftp。例如,它支持'is_dir()'。另見http://www.php.net/manual/en/function.ftp-rawlist.php。 – hakre