我需要使用PHP根据文件名的后半部分获取文件
文件名的结构将始终为NAME_123456789.dat,其中数字为tracking_id(unique)
。
名称为John, Mel, Bronson, etc
。数字是tracking_id
。
仅用于理解的过程将是一个人将输入其tracking_id。它将从搜索栏中提取出来,并将其植入特定目录的ftp搜索中。因为tracking_id
是唯一的,所以它应该只返回一个结果,因此ftp_get()
对吗?
非常感谢您的帮助。
答案 0 :(得分: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服务器的方式和时间,因此,鉴于我们对此一无所知,我无法提供任何解决方案。