Php 如果文件包含日期,如何进行日期分类?

Php 如果文件包含日期,如何进行日期分类?,php,Php,我卡住了 我想大家都知道Gyazo的快速截图程序,如果不是的话。 几个月前,我在FTP上创建了一个文件夹。我制作的所有截图都将上传到我FTP上的那个文件夹中 图像名称是自动创建的yyyymmddhhmmss Example: 20140921132714.PNG 我制作了一个页面,我只能访问它来查看图片。但是我怎样才能在不连接数据库获取额外信息的情况下创建一个类别呢 Example: January 2014 picture1, picture 2, picture 3 December

我卡住了

我想大家都知道Gyazo的快速截图程序,如果不是的话。 几个月前,我在FTP上创建了一个文件夹。我制作的所有截图都将上传到我FTP上的那个文件夹中

图像名称是自动创建的yyyymmddhhmmss

Example: 20140921132714.PNG
我制作了一个页面,我只能访问它来查看图片。但是我怎样才能在不连接数据库获取额外信息的情况下创建一个类别呢

Example:

January 2014
picture1, picture 2, picture 3

December 2013
picture 4, picture 5 etc.

提前谢谢

因此,据我所知,您只需按年度和月份对这些文件进行分组。简单的方法就是像这样迭代:

$files = ['20140921132714.PNG', '20140921132724.PNG', '20140921132734.PNG'];
$groupedFiles = [];
foreach ($files as $file) {
    $yearmonth = substr($file, 0,6);
    $groupedFiles[$yearmonth][] = $file;
}

var_dump($groupedFiles);

现在您有了一个数组,其中所有文件都设置了yearmonth作为数组的键。迭代它并打印出您的屏幕截图

,因为您使用了PHP标记,我想您想在PHP中这样做?如果没有我喜欢的数据库,我认为您可以做到这一点的唯一方法是:

1:读取FTP服务器上的整个文件夹:

$ftp_server = "ftp.example.com";
$ftp_user   = "foo";
$ftp_pass   = "bar";
$ftp_dir    = ".";

// set up a connection or die
$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server"); 

// try to login
if (@ftp_login($conn_id, $ftp_user, $ftp_pass)) 
{
  $list = ftp_nlist($conn_id,$ftp_dir);
} 
else echo "Couldn't connect as $ftp_user\n";

// close the connection
ftp_close($conn_id);   
2:处理您读入date的PHP所能理解的内容:

foreach ($list as $filename)
{
  // get date of each file
  if (is_numeric(substr($filename,0,14)))
  {
    $year      = substr($filename,0,4);
    $month     = substr($filename,3,2);
    $day       = substr($filename,5,2);
    $hour      = substr($filename,7,2);
    $minute    = substr($filename,9,2);
    $second    = substr($filename,11,2);
    $timestamp = strtotime("$year-$month-$day $hour:$minute:$second")
    $datedList[$timestamp] = $filename;
  }
}
unset($list);
// sort on dates
ksort($datedList);
3:在HTML页面上显示:

$currentDate = '';
foreach ($datedList as $time=> $filename)
{
  $date = date('F Y',$time);
  if ($currentDate != $date)
  {
    // start new day
    echo "<br><b>$date:</b><br><br>";
    $currentDate = $date;
  }
  // show file
  echo "$filename<br>";
}

通过更改日期函数,使用参数“fj,Y”,您可以轻松地显示天数而不是月份。拥有真实的日期还可以让您不显示文件名本身,而是显示制作文件时人类可读的日期。您可以将第二步和第三步合并为一个步骤。为了清楚起见,我把它们分开。如果你真的想让文件名可以点击并显示屏幕截图,你还需要在最后一部分做一些工作。

我只想告诉你:我不知道Gyazo。我不喜欢假设每个人都知道Gyazo是什么。编辑在php代码中使用date'Ym',strotime$filename创建一个动态数组,并插入相关文件…仍然需要从ftp扫描整个目录