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
)
干杯!
我想知道 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
)
干杯!