[英]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.jpg
和D25201-2
,其余圖像將被重命名為D25201-1.jpg
和D25201-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.