php 检索具有特定扩展名的最新文件

pxiryf3j  于 2022-11-21  发布在  PHP
关注(0)|答案(2)|浏览(198)

我试图通过FTP从一个文件夹中获取具有特定扩展名的最新文件。我使用下面的代码来获取最新的文件。但是它获取的是最新的文件,而不管文件扩展名是什么。

// new connect

$conn = ftp_connect('ftp.website.com');
ftp_login($conn, 'username', 'password');

// get list of files on given path
$files = ftp_nlist($conn, '/data');

$mostRecent = array(
'time' =\> 0,
'file' =\> null
);

foreach ($files as $file) {
// get the last modified time for the file
$time = ftp_mdtm($conn, $file);

    if ($time > $mostRecent['time']) {
        // this file is the most recent so far
        $mostRecent['time'] = $time;
        $mostRecent['file'] = $file;
    }

}

ftp_get($conn, "/home/mywebsite/public_html/wp-content/uploads/data-zipped/target.zip", $mostRecent\['file'\], FTP_BINARY);
ftp_delete($conn, $mostRecent\['file'\]);
ftp_close($conn);

我想获取具有特定扩展名的特定文件。
我想要取得的档案以下列filename.add.zip结尾。
文件名每天都在变化,因此可能是file22.add.zipmoredata.add.zip
但是add.zip保持不变。
不幸的是,也有扩展名为filename.del.zip的文件
所以它不能只是.zip,它需要是add.zip
因此,通过FTP,我想获取以add.zip结尾的最新文件。
有人有办法吗?
我目前使用的代码只选取最近的文件。不管文件扩展名是什么。

pw9qyyiw

pw9qyyiw1#

除了由@Anggara的好的通用答案,许多(大多数)FTP服务器将只允许您检索列表过滤的扩展名:

$files = ftp_nlist($conn, '/data/*.add.zip');

一些参考资料:

顺便说一句,如果你有很多文件,为每个文件调用php_mdtm可能要花很长时间。

tcomlyy6

tcomlyy62#

如果要检查以*.add.zip结尾的文件,请在循环中添加过滤器:

foreach ($files as $file) {
    $time = ftp_mdtm($conn, $file);

    // get last 8 characters from the filename
    $fileSuffix = substr($file, -8);

    if ($time > $mostRecent['time'] && $fileSuffix == '.add.zip') {
        $mostRecent['time'] = $time;
        $mostRecent['file'] = $file;
    }
}

var_dump($mostRecent);

相关问题