PHP删除包含给定字符串的所有文件

PHP删除包含给定字符串的所有文件,php,regex,caching,unlink,Php,Regex,Caching,Unlink,我有一个基本的缓存系统设置,它根据url中的参数保存一个文件,这样,如果该页面再次被查看,它将访问静态文件。如果我的网址是 http://www.example.com/female/?id=1 我有一个文件位于名为id=1.html的缓存文件夹中 female/cache/id=1.html 目前,这是一个指定的时间量缓存,但我希望它总是使用缓存文件,除非页面更新 所以我实现了下面的php代码 <? unlink('../' . $gender . '/cac

我有一个基本的缓存系统设置,它根据url中的参数保存一个文件,这样,如果该页面再次被查看,它将访问静态文件。如果我的网址是

http://www.example.com/female/?id=1
我有一个文件位于名为id=1.html的缓存文件夹中

female/cache/id=1.html
目前,这是一个指定的时间量缓存,但我希望它总是使用缓存文件,除非页面更新

所以我实现了下面的php代码

    <?
        unlink('../' . $gender . '/cache/id=' . $_POST['id'] . '.html');
    ?>
但是当我保存我的内容时,只有female/cache/id=1.html被删除

如何删除此文件夹中id为1的任何文件,您可以使用:



其中星号
*
匹配文件名的所有变体

或者,您可以使用
array\u map()
使操作更简洁:


请注意,数组映射可能比foreach循环慢:

但是,在PHP7.x下可能不再是这种情况。我对7.04接受答案基准的结果:

  • Foreach:0.096698999404907//接受答案的方法
  • MapClose:0.10490107536316
  • 地图名称:0.073607206344604//我的选择

请不要使用短开放标签
,因为如果您移动到默认禁用该标签的环境中,这将是一件痛苦的事情。@HamZa感谢您提供的提示,我没有过多地考虑它,但看看我的代码,它正在使用
    female/cache/id=1.html
    female/cache/id=1&type=2.html
    female/cache/id=1&type=3.html
    female/cache/id=1&type=3&extra=4.html
<?php
foreach (glob("female/cache/id=1*.html") as $filename) {
    unlink($filename);
}
?>
<?php
array_map('unlink', glob('female/cache/id=1*.html'));
?>