繁体   English   中英

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

[英]Recursively delete files with different names within directories - PHP

我正在使用一个名为ELGG的脚本。 它允许我的成员将图像上传到4兆像素,但会自动将其缩小到定义的大小(宽或高700像素)。 不幸的是,巨大的图像仍然保留在目录中,这使我的服务器停滞不前。 根据是照片还是头像,在过程中会生成一些小图像,我必须小心,将正确的图像留在后面。 这不是一个繁忙的站点,我可以每周运行一个小脚本。

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

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

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

我需要删除的文件将是我的成员发布的名称,但还将包含Elgg发布的数字。

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

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

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

您也可以使用preg_filter代替preg_match。

像这样循环进入目录:

$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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM