POST TIME:2018-04-22 19:20
有時我們刪除文章后,這篇文章內的縮略圖和內容圖片會留在/uploads/allimg里面,這些圖片沒有用了,也很占空間,那么我們就需要在刪除文章的同時刪除縮略圖和內容大圖,方法如下:
打開dede/inc/inc_batchup.php,找到"//刪除數據庫的內容",前面加以下代碼:
//刪除縮略圖
if($arcRow['litpic']!=""){
$dsql->ExecuteNoneQuery("Delete From dede_uploads where url='$arcRow[litpic]'");
$truedir = GetTruePath($arcRow['siterefer'],$arcRow['sitepath']);
$litpicfile = $truedir.$arcRow['litpic'];
@unlink($litpicfile);
}
//刪除大圖
$arcbodyQuery = "Select * from ".$arcRow['addtable']." where aid='$aid'";
$arcbodyRow = $dsql->GetOne($arcbodyQuery);
$imgsrcarray=GetImageSrc($arcbodyRow['body']);
foreach ($imgsrcarray as $v) {
if((trim($v)!="")&&(!eregi("^http://",$v))){
$dsql->ExecuteNoneQuery("Delete From dede_uploads where url='$v'");
$truedir = GetTruePath($arcRow['siterefer'],$arcRow['sitepath']);
$picfile = $truedir.$v;
@unlink($picfile);
}
}
找到
Select a.ID,a.title,a.typeid,
改成
Select a.ID,a.title,a.typeid,a.litpic,
在頁面最后加入函數
//刪除文章同時刪除大圖函數
function GetImageSrc($body){
if( !isset($body)) return;
else{
preg_match_all("/<(img|IMG)(.*)(src|SRC)=[&;|'|]{0,}([h|/].*(jpg|JPG|gif|GIF))[&;|'|s]{0,}/isU",$body,$out);
return $out[4];
}
}
完成以上修改,就可以了,需要的朋友可以去測試一下。