如何按日期排序文件列表

时间:2011-10-25 18:47:04

标签: php jquery sorting

服务器返回:

<div id="urls">

   04.10.2011-some-article.html   <br />
   10.09.2011-other-article.html   <br />
   14.07.2010-some-text.html   <br />
   18.09.2011-article.html   <br />
   25.10.2011-text.html   <br />

</div>

但我想按实际创建日期对这些文章进行排序。 有没有办法用jQuery(或立即使用php?)

请给我建议 感谢您的关注和帮助!

2 个答案:

答案 0 :(得分:1)

只需为此算法进行一些本地语言编译。我想5或6行代码应该没问题。

  • 剥离前两行和最后一行
  • 使用正则表达式提取日期
    • 将其订单更改为YYY-MM-DD
    • 或转换为日期对象
  • 将这些放入地图(关联数组)
  • 使用asort
  • 可以轻松完成最终排序

答案 1 :(得分:1)

首先,这是从服务器获取的非常糟糕的数据。看起来它可能会更改,恕不另行通知等。如果它来自API,您应该寻求更好的响应格式,例如JSON。

尽管如此,这里有一些PHP可以按日期对文章进行排序。

<?php

$serverData = <<<EOF
   04.10.2011-some-article.html   <br />
   10.09.2011-other-article.html   <br />
   14.07.2010-some-text.html   <br />
   18.09.2011-article.html   <br />
   25.10.2011-text.html   <br />
EOF;

$articles = explode("\n", $serverData);
usort($articles, function($a, $b) {
    $times = array();
    foreach (array($a, $b) as $article) {
        if ($article) {
            list($date, $title) = explode('-', trim($article), 2);
            list($day, $month, $year) = explode('.', trim($date));
            $times[] = strtotime("$year-$month-$day");
        } else {
            $times[] = 0;
        }
    }
    return $times[1] - $times[0];
});

print_r($articles);