我有一堆文件在我的服務器上,文件名從'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