簡體   English   中英

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

[英]Delete and rename files using unlink() and 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');
        }
    }
}
?>

我還沒有時間進行測試,但是應該執行以下操作(或者至少可以給您一個提示,讓您自己解決這個問題):

$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');
                   }
                }
            }
        }
    }
}

使用更少的循環可能是更好的方法,但是類似的事情應該起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM