4

简而言之

我们有一个名为clients.(unique parameter). 现在我们想要unlink()它,但由于我们不知道文件扩展名,我们如何成功?

更长的故事

我有一个缓存系统,其中的数据库查询md5()是文件名,缓存到期日期是扩展名。

例子: 896794414217d16423c6904d13e3b16d.3600

但有时保质期会发生变化。所以对于最终的解决方案,文件扩展名应该被忽略。

我能想到的唯一方法是搜索目录并匹配文件名,然后获取文件扩展名。

4

2 回答 2

10

使用glob()

$files = glob("/path/to/clients.*");
foreach ($files as $file) {
  unlink($file);
}

例如,如果需要,您可以检查filemtime()返回的每个文件的glob()对它们进行排序,以便只删除最旧的文件。

// Example: Delete those older than 2 days:
$files = glob("./clients.*");
foreach ($files as $file) {
   if (filemtime($file) < time() - (86400 * 2)) {
     unlink($file);
   }
}
于 2012-02-06T17:06:11.383 回答
1

您猜测在目录中搜索匹配的文件名是正确的。您可以采取多种方法:

readdir有问题的文件夹

glob正如迈克尔建议的那样

您还可以获取结果字符串的输出,ls {$target_dir} | grep {$file_first_part}然后取消链接(假设找到匹配项)。

于 2012-02-06T17:08:19.587 回答