PHP Unlink() 可以根据模式删除多个文件吗?

Can PHP Unlink() delete multiple files based on a pattern?

我想知道 unlink() 函数是否可以根据模式删除多个文件,例如:

unlink('./directory/(*).txt');

是否有类似的东西可以删除多个文件(例如 .txt 文件)而不需要 glob() 和循环?

documentation说的是只能传递一个文件,就像C的unlink一样。

不,但这只有 77 个字节或 69 个单字母变量:

array_map('unlink',preg_filter('/^/',$dir,preg_grep($regex,scandir($dir))));
//array_map('unlink',preg_filter('/^/',$d,preg_grep($r,scandir($d))));

未经测试,理论上应该可行(也许)。 $dir 是带有结尾斜杠的目录。 $regex 是一个完整的正则表达式。

without the need of glob() and loops

没有 glob,没有循环。虽然我确实使用了 array_map 但我没有关闭它。

用于测试:

$dir = 'somefolder/';

//scandir($dir)
$files = ['index.php', 'image.jpg', 'somefile.php'];

//look for files ending in .php
$regex = '/\.php$/';

//strval is useless here but, it shows it works, these are strings so it just returns what we already have
$files = array_map('strval', preg_filter('/^/', $dir, preg_grep($regex, $files)));

//I could have used 'print_r' instead of 'strval' but this is formatted better!
print_r($files);

输出

//these would be sent to unlink
Array
(
    [0] => somefolder/index.php
    [2] => somefolder/somefile.php
)

Sandbox

干杯!