首先,理解ftp_nlist的工作方式很重要。該函數通過FTP 協議向服務器請求指定目錄的文件名列表,並將結果作為數組返回。至於隱藏文件, ftp_nlist並不會自動排除以點號( . )開頭的文件。也就是說,隱藏文件會出現在返回的文件列表中,除非FTP 服務器配置或具體的目錄中沒有這些文件。
可以通過在服務器上手動檢查返回的文件列表來驗證這一點。在很多基於UNIX 的系統中,隱藏文件通常以點號( . )開頭,像.gitignore或.bashrc等文件就屬於此類。
$ftp_connection = ftp_connect("ftp.m66.net");
ftp_login($ftp_connection, "username", "password");
$file_list = ftp_nlist($ftp_connection, "/path/to/directory");
print_r($file_list);
上述代碼返回的$file_list數組中,若目錄中有以點號開頭的文件,它們會被列出。
既然ftp_nlist返回的文件列表可能包含隱藏文件,我們就需要通過某種方式判斷文件是否為隱藏文件。最直接的方式就是檢查文件名是否以點號( . )開頭。
foreach ($file_list as $file) {
if (strpos($file, '.') === 0) {
echo $file . " 是隱藏文件\n";
} else {
echo $file . " 不是隱藏文件\n";
}
}
以上代碼通過檢查文件名的第一個字符是否是點號來判斷文件是否是隱藏文件。若文件名以點號開頭,就認為它是隱藏文件。
如果希望過濾掉隱藏文件,可以在獲取文件列表之後進行進一步處理,只保留那些不是隱藏文件的項。例如:
$visible_files = array_filter($file_list, function ($file) {
return strpos($file, '.') !== 0; // 過濾掉以點號開頭的文件
});
print_r($visible_files);
通過這種方式,你可以確保返回的文件列表中不包含任何隱藏文件,適合需要顯示公共文件列表的場景。
ftp_nlist默認返回的文件列表會包括隱藏文件,尤其是在UNIX 和類UNIX 系統中,隱藏文件是以點號開頭的。判斷文件是否隱藏,可以通過檢查文件名是否以點號開頭來實現。如果需要過濾掉隱藏文件,可以使用array_filter函數進行處理,保留那些不是隱藏文件的項。