递归删除目录中具有不同名称的文件 - PHP

时间:2014-03-22 17:20:36

标签: php elgg

我正在使用名为ELGG的脚本。它允许我的成员将图像上传到4meg,但会自动将它们缩小到规定的大小(700px宽或高)。不幸的是,巨大的图像仍然存在于目录中,这使我的服务器窒息。在这个过程中会产生几个小图像,这取决于它是照片还是化身,我必须小心,我会留下正确的图像。这不是一个繁忙的网站,我可以每周运行一个小脚本。

这就是它变得棘手的地方。我需要保存的文件编号奇怪:

###large.jpg
###medium.jpg
###small.jpg
###tiny.jpg
###topbar.jpg
largethumb#####.jpg
smallthumb#####.jpg
thumb#####.jpg

编号###似乎是随机的,从2位到20位不等。

我需要删除的文件是我的会员发出的名字,但也包含Elgg发布的数字。

脚本不一定要花哨。它只需删除所有子目录中除上述文件之外的所有文件。

希望有人可以提前帮助和感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用scandir列出目录中的所有文件。 然后,您可以使用preg_match只选择符合条件的文件。 最后,unlink将删除您作为参数传递的文件。

您也可以使用preg_filter代替preg_match。

答案 1 :(得分:0)

将这样的内容循环到目录中:

$image = "pin987414578.png";
$delete = "pin987414578.png"; //keep original name to delete
$image2 = preg_replace("/[^a-z,A-Z.]/", "", $image);
if($image2=="large.png" ||$image2=="medium.png" ||$image2=="small.png" ||)
{
unlink($delete)
}

此示例=结果:pin.png