我的服务器上有一堆文件,文件名从“april2009”到“march2013”,中间每个月都有一个文件(从现在开始每个月都会添加一个新文件)。
我尝试使用“filemtime”按顺序排列,但这给出了一个随机顺序,因为它们似乎已在各处进行了修改。
如何对文件名进行排序并按顺序排列,从最近的第一个开始?
(使用 php 获取文件名,但可以为此使用 jquery 或混合使用)
谢谢
strtotime
日期转换很棒。
检索文件列表后,您可以执行以下操作:
$date = strtotime('april2003');
这会给你:1049155200
。意思是:
2003 年 1 月 4 日至 2:00:00
一旦你有了你的时间戳,你就可以做任何你想做的事情。
这是一个 POC:
$dirs = array();
if ($handle = opendir('/path/to/dir')) {
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != ".." && is_dir($entry)) {
$dirs[strtotime(substr($entry, 0, -5))] = $entry;
}
}
closedir($handle);
}
krsort($dirs);
说得委婉一点,在提出文件命名约定之前应该考虑到这一点。正如评论中所指出的,唯一合理的命名约定是可排序的 yyyy-mm 或 yyyy-mm-dd。
在这种情况下,您唯一的选择是: