PHP如何根据创建日期包含文件?

时间:2009-12-29 16:17:10

标签: php date include creation code-snippets

我想创建一个新闻页面,其中包含在以下目录结构中创建的最新3个文件的片段:

所以我想说我有以下文件:

/news.php /2010/the-latest-article.php /2009/some-long-article-name.php /2009/another-long-article-name.php /2009/too-old-article-name.php /2009/another-old-article-name.php

我只想将前3个文件包含在news.php输出中。

4 个答案:

答案 0 :(得分:3)

你必须:

  • 通过遍历目录结构列出所有现有PHP文件
  • 使用filectime
  • 访问创建时间
  • 选择该列表中最近的三个

如果要搜索大量文件,这可能会变慢。数据库会更快。

答案 1 :(得分:3)

如果您可以在文件名前加上日期和时间(YYYY-MM-DD HH:mm:ss),那么您可以按字母顺序排序并取最后三个。否则,维克多有​​一个很好的答案。

答案 2 :(得分:1)

您可以使用opendir http://php.net/manual/en/function.opendir.php和readdir http://www.php.net/manual/en/function.readdir.php

打开文件目录

然后你可以使用php函数filemtime http://php.net/manual/en/function.filemtime.php,它返回传递给它的文件名的最后修改日期。

所以你要做的就是查看目录中的所有文件,并通过返回filemtime来命令它们(它返回一个UNIX时间戳)。一旦你订购它们(使用你喜欢的任何排序算法),只需返回前3个结果。

答案 3 :(得分:1)

来自php.net:

foreach (glob("../downloads/*") as $path) { //configure path
    $docs[filectime($path)] = $path;
} ksort($docs); // sort by key (timestamp)

foreach ($docs as $timestamp => $path) {
    print date("d. M. Y: ", $timestamp);
    print '<a href="'. $path .'">'. basename($path) .'</a><br />'; 
}

另外,如果您使用的是windoze,filemtime可能会提供更好的结果。