Search code examples
phpregexcachingunlink

PHP Delete all files that contain a given string


I have a basic cache system setup which saves a file based on the parameters in the url so that if that page gets viewed again it accesses the static file. eg if my url is

http://www.example.com/female/?id=1

I have a file located in a cache folder called id=1.html

female/cache/id=1.html

currently this is cached for a specified amount of time however I want it to always use the cached file unless the page is updated.

So I implemented the below php code.

    <?
        unlink('../' . $gender . '/cache/id=' . $_POST['id'] . '.html');
    ?>

this works fine however, some times there are additional parameters in my url. So currently I have the below files in my cache folder

    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

But when I save my content only female/cache/id=1.html is removed.

How would I go about removing any file in this folder with the id=1


Solution

  • You could use glob:

    <?php
    foreach (glob("female/cache/id=1*.html") as $filename) {
        unlink($filename);
    }
    ?>
    

    Where the asterisk * matches all the variations of the filename.