简而言之
我们有一个名为clients.(unique parameter)
的文件。现在我们想要unlink()
它,但由于我们不知道文件扩展名,我们如何成功?
更长的故事
我有一个缓存系统,其中md5()
中的数据库查询是文件名,缓存过期日期是扩展名。
示例: 896794414217d16423c6904d13e3b16d.3600
但有时失效日期会发生变化。因此,对于最终解决方案,应忽略文件扩展名。
我能想到的唯一方法是搜索目录并匹配文件名,然后获取文件扩展名。
答案 0 :(得分:9)
使用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);
}
}
答案 1 :(得分:1)
您猜测在目录中搜索匹配的文件名是正确的。您可以采取多种方法:
readdir
相关文件夹
glob
您还可以获取ls {$target_dir} | grep {$file_first_part}
的输出,然后取消链接生成的字符串(假设找到了匹配项)。