gpt4 book ai didi

php - 如何通过php按修改日期对文件进行排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:55:13 28 4
gpt4 key购买 nike

背景:我有一个匿名登录的 ftp 服务器,ftp_nlist 只按字母顺序列出文件,我想根据最后修改日期获取文件列表,最近的在前。我试过 ftp_exec($conn, "ls -t") 但我看到权限被拒绝错误,不知道为什么它不工作。好吧,我正在使用 php-cli,文件数量以千计,我只想使用最近的文件。获取原始列表并找到数组元素的日期部分可能会有所帮助,但我希望有简单的方法。当我通过终端命令登录时 ls -t 工作正常。所以想知道为什么 ftp_exec 不工作。

寻求一个简单的建议。

提前致谢。

最佳答案

如果只想按最后修改日期对文件进行排序,可以使用

ftp_nlist($conn, '-t .');

不过,这不会告诉您什么每个文件的日期。

如果您还想获取修改日期,可以使用 ftp_rawlist 并解析输出。这是我拼凑的一个简单示例:

$list = ftp_rawlist($ftp, '.');

$results = array();
foreach ($list as $line) {
list($perms, $links, $user, $group, $size, $d1, $d2, $d3, $name) =
preg_split('/\s+/', $line, 9);
$stamp = strtotime(implode(' ', array($d1, $d2, $d3)));
$results[] = array('name' => $name, 'timestamp' => $stamp);
}

usort($results, function($a, $b) { return $a['timestamp'] - $b['timestamp']; });

此时 $results 包含一个按上次修改时间升序排列的列表;反转排序函数以获取最近修改的第一种格式的列表。

注意:ftp_rawlist 不提供精确 修改时间戳,因此此代码可能无法始终准确运行。您还应该验证 FTP 服务器的输出是否符合此算法,并包括一些健全性检查以确保将来保持这种状态。

关于php - 如何通过php按修改日期对文件进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10207191/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com