使用php比较所选日期和文件名

时间:2016-09-09 02:39:15

标签: php

文件夹中有数千个文件。我想让用户根据所选日期选择日期并显示所有文件。

文件格式为bt_16-08-30_00_22_03.db

以下是我获取所有文件的方式

foreach (new DirectoryIterator($dbfilepath) as $file) {
   if ($file->isFile()) {
     $thefilename = $file->getFilename();
     if (strripos($thefilename,".db")==true) {
       $thefiles[$countdirfiles] = $thefilename;
       $countdirfiles++;
     }
   }
 }

如何查找仅具有特定日期的所有文件?

  

注意:   bt_16-08-30_00_22_03 - > 2016年8月30日00:22:03

2 个答案:

答案 0 :(得分:0)

这是2个解决方案

检查您的日期是否在文件名中

$date = '16-08-30';
foreach (new DirectoryIterator($dbfilepath) as $file) {
   if ($file->isFile()) {
     $thefilename = $file->getFilename();
     if (strripos($thefilename,".db")==true && strpos($thefilename, $date) !== false) {
       $thefiles[] = $thefilename;
     }
   }
 }

请注意,您不需要$countdirfiles

或者使用glob你可以使用正则表达式

$pattern = '*'.$date.'*.db';  // not sure about that regexp  
foreach (glob(pattern) as $filename) {
    echo "$filename \n";
}

答案 1 :(得分:0)

这是我的方法。

将日期分配给会话(或任何其他)。使其类似于文件名。

if(isset($_SESSION['onedate'])){
  $btfifiletocomp = 'bt_' . date('y-m-d', strtotime($_SESSION['onedate'])) . '';      
}

现在检查文件名是否包含 $ btfifiletocomp

foreach (new DirectoryIterator($dbfilepath) as $file) {
   if ($file->isFile()) {
     $thefilename = $file->getFilename();
     if (strripos($thefilename,".db")==true) {
       if (0 === strpos($thefilename, $btfifiletocomp)){
         $thefiles[$countdirfiles] = $thefilename;
         $countdirfiles++;
       }
     }
   }
 }