2017-06-21 192 views
1

我想獲取具有ftp_nlist函數的FTP文件夾中的所有文件。如何獲取FTP文件夾中的文件按修改時間排序

但默認情況下,它返回按名稱排序的數組。

我想按上次修改時間對它們進行排序。我試圖在文件夾路徑前添加-lt,但它只是在每個文件名之前添加日期時間。

請幫幫我!

+0

我敢打賭,你將不得不使用:http://php.net/manual/en/function.ftp -rawlist.php並手動解析並排序。 – mkaatman

回答

2

有沒有標準的方法讓FTP服務器根據您的(或任何)標準對文件進行排序。

儘管一些FTP服務器(特別是ProFTPD和vsftpd)支持使用LIST/NLST命令排序條目的專有標誌。

這兩種服務器支持-t標誌由一個修改時間對文件進行排序:

LIST -t 

雖然這不僅是非標準的,它實際上違反了FTP協議。

對於由ProFTPD的支持的所有選項,請參閱其手冊頁:
http://www.proftpd.org/docs/directives/linked/config_ref_ListOptions.html

注意的vsftpd只支持-a-r-t-F-l與意義ProFTPD的相同。


如果您的服務器不支持-t開關(或類似),你唯一的選擇是與文件屬性爲的是獲取上市並在本地排序。

爲此,您不能使用ftp_nlist,因爲它僅返回文件名。可以使用ftp_rawlist。雖然它返回文件的專有列表,但這很難解析。但是,如果您只需要支持一臺特定的服務器,則可以對該服務器的解析進行硬編碼。

如果您需要一個通用的解決方案,理想的方法是使用返回可靠的機器可讀目錄列表的MLSD FTP命令。但PHP不支持這一點。

還有的MLSDftp_rawlist命令的用戶評論的實現:
https://secure.php.net/manual/en/function.ftp-rawlist.php#101071

+0

謝謝,我認爲我的ftp服務器不支持該功能。 –

+0

我會在本地排序 –

+1

是的,我知道,這是最終答案 –

相關問題