我有一堆文件在我的服务器上,文件名从'april2009'到'march2013',每个月之间的文件(加上从现在开始的每个月的新文件将被添加)。文件名列表为日期,按日期排列?
我试着按照'filemtime'的顺序排列,但是这给了一个随机的顺序,因为它们看起来已经在整个地方被修改了。
如何从文件名中排序并按顺序排列,从最近的第一个开始?
(用PHP获取文件名,但可以使用jQuery或混合用于此目的)
感谢
我有一堆文件在我的服务器上,文件名从'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);
说得客气一点,这应该已经快到了文件namning会议之前想过。正如评论中指出的那样,唯一明智的命名约定是可排序的一个yyyy-mm或yyyy-mm-dd。
在这种情况下,你唯一的选择就是:
显而易见的解决方案是:将文件名更改为yyyy-mm-dd而不是您当前的格式,然后按名称排序。但我想这是不可能的? – 2013-03-11 12:46:06
在这里查看接受的答案。正是你需要的。 http://stackoverflow.com/questions/124958/glob-sort-by-date – Ateszki 2013-03-11 12:46:47
它是的,文件名被设置为这样,因为它们正在多个其他地方使用,代码将需要更改以及 – rpsep2 2013-03-11 12:46:52