文件夹中有数千个文件。我想让用户根据所选日期选择日期并显示所有文件。
文件格式为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
答案 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++;
}
}
}
}