带部分文件名的ftp_get()文件(不是通配符)

问题描述 投票:1回答:1

我需要使用PHP获取基于文件名后半部分的文件

文件名的结构将始终为NAME_123456789.dat,其中数字为tracking_id(unique)

这个名字是John, Mel, Bronson, etc。这个数字是tracking_id

这个过程只是为了理解,一个人将进入他们的tracking_id。它将从搜索栏中提取并将其植入特定目录中的ftp搜索中。因为tracking_id是唯一的,它应该只返回一个结果,因此ftp_get()对吗?

任何帮助是极大的赞赏。

php ftp
1个回答
1
投票

鉴于相对较小的目录大小(上述评论100+),你应该可以首先使用ftp_nlist()列出所有文件,然后搜索并下载你想要的文件。

$search = '_' . $trackingId . '.dat';
$searchLen = strlen($search);
$dir = '.'; // example directory
$files = ftp_nlist($connection, $dir); 
foreach ($files as $file) {
    // check if $file ends with $search
    if (strrpos($file, $search) === strlen($file) - $searchLen) {
        // found it, download it
        ftp_get($connection, 'some/local/file/path', $dir . '/' . $file);
    }
}

Michael Berkowski's comment above中可以找到更好,更具前瞻性的选择......

在任何给定时间,您希望在目录中运行多少个文件?如果它是一个小数字,通过ftp列出内容可能会适当。如果它是数千个文件,您可能希望存储某种文本清单文件以从中读取或在数据库中将它们编入索引。

这些确实取决于如何以及何时将文件上传到FTP服务器,因为我们对此一无所知,我无法提供任何解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.