使用unlink()和rename()删除和重命名文件

咆哮主持人

我有一个文件夹,其中包含数千种网站产品的图像,如下所示:

D25200-1.jpg
D25200-2.jpg
D25200-3.jpg
D25201-1.jpg
D25201-2.jpg
D25201-3.jpg
D25201-4.jpg

也就是说,该产品D25200有3张照片,D25201也有4张照片。

我想删除一些图像,但是要保留从1开始的计数。例如,如果我删除D25201-1.jpgD25201-2,则其余图像要重命名为D25201-1.jpgD25201-2.jpg

这是我到目前为止创建的代码,但是只会删除照片:

<?php
$codes = array(
    'D25201' => '1,2'
);

$dirs = array(
    dirname(__FILE__) . '/products/',
    dirname(__FILE__) . '/products/large/',
    dirname(__FILE__) . '/products/medium/',
    dirname(__FILE__) . '/products/small/'
);

foreach($codes as $code => $photos) {
    $photos = explode(',', $photos);

    foreach($photos as $photo) {
        foreach($dirs as $dir) {
            unlink($dir . $code . '-' . $photo . '.jpg');
        }
    }
}
?>
菲利普·G

我还没有时间进行测试,但是应该执行以下操作(或者至少可以给您一个提示,让您自己解决这个问题):

$codes = array(
    'D25201' => '1,2'
);

$dirs = array(
    dirname(__FILE__) . '/products/',
    dirname(__FILE__) . '/products/large/',
    dirname(__FILE__) . '/products/medium/',
    dirname(__FILE__) . '/products/small/'
);

foreach($codes as $code => $photos) {
    $photos = explode(',', $photos);

    foreach($photos as $photo) {
        foreach($dirs as $dir) {
            if(unlink($dir . $code . '-' . $photo . '.jpg');){
              //if unlink is successfull... loop all images in current dir
                $files = scandir($dir);
                $c = 0;
                foreach($files as $file){
                   $c++;
                   //if the name of the image contains the productcode
                   if(strpos($file,$code) !== false){
                        //rename the file
                        rename ($file , $dir . $code . '-' . $c . '.jpg');
                   }
                }
            }
        }
    }
}

使用更少的循环可能是更好的方法,但是类似的事情应该起作用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章