Dede删除文章内容中的文本文档和图片。这个功能对于制作图片网址的朋友来说非常重要,尤其是在删除收藏的文章内容时,会造成很多无用的图片。这个程序流程并不能保证100%的获取正文中的图片,但是在我的申请过程中,并没有发现任何问题。
最先,在"/include"文件目录下创建"extend.func.php"文档.随后,将以下几点储存在"extend.func.php"文档中,一共三个涵数:复制代码编码以下:
//分析body数据信息,得到全部图片的肯定详细地址
functionGetPicsTruePath($body,$litpic)
{
$delfiles=array();//储存图片详细地址数据信息
if(!empty($litpic))
{
$litpicpath=GetTruePath();
$litpicpath.=$litpic;
$delfiles[]=$litpicpath;//缩列图详细地址
}
preg_match_all("/src=[\"|'|\S|\s]([^title="liehuo.net"|\/|>]*){0,}(([^>]*)\.(gif|jpg|png))/isU",$body,$tmpdata);
$picspath=array_unique($tmpdata);//body中全部图片的详细地址
foreach($picspathas$tmppath)
{
$path=GetTruePath();//得到相对路径
$picpath=preg_replace("/[a-zA-z]:\/\/[^|\/|\s]*/",'',$tmppath);//除掉网站地址一部分
$path.=$picpath;
$delfiles[]=$path;//储存解决后的数据信息
}
return$delfiles;
}
//得到文章内容Body数据信息
functionGetArcBody($aid)
{
global$dsql;
$query="SELECT[url=mailto:dede_addonarticle.body]dede_addonarticle.body[/url]FROM[url=mailto:`dede_addonarticle]`dede_addonarticle[/url]`WHERE[url=mailto:dede_addonarticle.aid]dede_addonarticle.aid[/url]='$aid'";
$row=$dsql->GetOne($query);
if(is_array($row))
return$row;
else
returnfalse;
}
//载入日志文档
functionWriteToDelFiles($msg)//删除文章内容的情况下会根据此涵数纪录日志
{
if(empty($msg))$savemsg="未得到信息";
else$savemsg=$msg;
$errorFile=dirname(__FILE__).'/../data/del_body_file.txt';//删除纪录文档
$fp=@fopen($errorFile,'a');
@fwrite($fp,"\r\n{$savemsg}");
@fclose($fp);
}
接下去开启"/dede/inc/inc_batchup.php"文档。
1:在33行正下方添加,也就是"$arcRow=$dsql->GetOne($arcQuery);"正下方:
$arcBodyRow=GetArcBody($aid);
2:在138行正下方添加,也就是"returntrue;"上边:
复制代码编码以下:
//分析Body中的資源,并删除
$willDelFiles=GetPicsTruePath($arcBodyRow['body'],$arcRow['litpic']);
$nowtime=time();
$executetime=MyDate('Y-m-dH:i:s',$nowtime);//得到实行時间
$msg="\r\n新闻标题:$arcRow[title]";
WriteToDelFiles($msg);
if(!empty($willDelFiles))
{
foreach($willDelFilesas$file)
{
if(file_exists($file)&&!is_dir($file))
{
if(unlink($file))$msg="\r\n部位:$file\r\n結果:删除取得成功!\r\n時间:$executetime";
else$msg="\r\n部位:$file\r\n結果:删除不成功!\r\n時间:$executetime";
}
else$msg="\r\n部位:$file\r\n結果:文档不存!\r\n時间:$executetime";
WriteToDelFiles($msg);
}//ENDforeach
}
else
{
$msg="\r\n未能Body中分析到数据信息\r\nBody原始记录:$arcBodyRow[body]\r\n時间:$executetime";
WriteToDelFiles($msg);
}
到此,所有改动进行,删除文章内容时,程序流程会剖析Body中的图片详细地址,随后删除.并在/data/文件目录下,造成日志纪录文档:del_body_file.txt。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)