[英]Delete files in ftp name containing a string
我想在 FTP 文件夾(和子文件夾)中刪除名稱中包含“2019”字符串的所有文件
例如 201902_QSA4_CA.pdf => 該文件將被刪除
這是我的代碼,但沒有運行:
$web = 'mipage.com';
$user = 'xxxx';
$pass = 'xxxx';
//connect
$conn_id = ftp_connect($web);
$login_result = ftp_login($conn_id,$user,$pass);
$it = new RecursiveDirectoryIterator("pdfs/archivo/");
$display = Array ('2019');
foreach(new RecursiveIteratorIterator($it) as $file)
{
if (in_array(reset(explode('.', $file)), $display))
unlink($file);
}
ftp_close($conn_id);
有人可以幫助我嗎?
謝謝
問候
ftp_nlist將允許您使用通配符來獲取文件列表。
$web = 'mipage.com';
$user = 'xxxx';
$pass = 'xxxx';
//connect
$conn_id = ftp_connect($web);
$login_result = ftp_login($conn_id,$user,$pass);
ftp_pasv($conn_id, true);
$files = ftp_nlist($conn_id, "/pdfs/archivo/2019*");
foreach ($files as $file_name)
{
ftp_delete($conn_id, $file_name);
}
如果需要遞歸查找子目錄,可以這樣操作。
$web = 'mipage.com';
$user = 'xxxx';
$pass = 'xxxx';
//connect
$conn_id = ftp_connect($web);
$login_result = ftp_login($conn_id,$user,$pass);
ftp_pasv($conn_id, true);
$files = [];
$ftpRecursiveSearcher = function ($path, $pattern) use (&$ftpRecursiveSearcher, &$files, &$conn_id)
{
$list = ftp_nlist($conn_id, $path);
foreach ($list as $name)
{
if (ftp_size($conn_id, $name) === -1)
{
$targets = ftp_nlist($conn_id, "{$name}/{$pattern}");
$files = array_merge($files, $targets);
}
}
};
$ftpRecursiveSearcher('pdfs/archivo', '2019*');
array_walk($files, function ($file) use (&$conn_id) {
ftp_delete($conn_id, $file);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.