【问题标题】:PHP preg_match and sort by file CREATION date [duplicate]PHP preg_match并按文件创建日期排序[重复]
【发布时间】:2014-11-26 06:39:50
【问题描述】:

我希望 preg_match 找到给定目录中的所有文件并将它们显示在页面上。我知道该怎么做,但我如何按创建日期对它们进行排序?我想要最新的在上面。这是我的代码:

function find_files() {
 $files = scandir("content");
 foreach ($files as $value) {
  if(preg_match("/file/", $value)) {
    echo "<li>$value</li>";    
  } 
 }
}

谢谢。

编辑:根据我得到的答案,我修改了我的代码:

function find_files() {
 $files = scandir("content");
 usort($files, create_function('$a,$b', 'return filectime($a)<filectime($b);'));
 foreach ($files as $value) {
  if(preg_match("/file/", $value)) {
    echo "<li>$value</li>";    
  } 
 }
}

但它仍然无法正常工作。浏览器无法完成加载。

【问题讨论】:

  • 使用filectime()获取创建时间。
  • 据我所知,这是最后修改日期,而不是创建日期。
  • 那个问题是问如何按 LAST MODIFICATION 日期排序。我没有这样做,但文件创建日期。 2 完全不同的东西。
  • 原理相同;只需交换 filemtime()filectime() 即可。另外,请阅读 this question 关于检索文件的创建时间。
  • 感谢您的所有帮助,但我仍然迷路了。我修改了我的问题并添加了我通过阅读您提供的数据发现的新代码,但它不起作用。

标签: php sorting preg-match


【解决方案1】:

PHP 支持多种对数组进行排序的方法,看看它们是如何工作的。您可以将其作为 asort($files) 运行。

解决这个问题的正确方法是在输出之前对数组进行排序。大致如下:

asort($files );
foreach($files as $value) {
  if (preg_match('/file/', $value))
    array[index++] = $value;
}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-20
  • 2011-06-12
  • 1970-01-01
  • 1970-01-01
  • 2013-03-11
  • 2017-08-05
相关资源
最近更新 更多