然后,将以下三个函数保存到该文件中:
// 解析body数据,获得所有图片的绝对地址
function GetPicsTruePath($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[2]); // body中所有图片的地址
foreach ($picspath as $tmppath) {
$path = GetTruePath(); // 获得绝对路径
$picpath = preg_replace("/[a-zA-z]+:\\\\/\\\\/[^ |\\\\/|\\\\s]*/", '', $tmppath); // 去掉网址部分
$path .= $picpath;
$delfiles[] = $path; // 保存处理后的数据
}
return $delfiles;
}
// 获得文章Body数据
function GetArcBody($aid) {
global $dsql;
$query = "SELECT dede_addonarticle.body FROM `dede_addonarticle` WHERE dede_addonarticle.aid = '$aid'";
$row = $dsql->GetOne($query);
if (is_array($row))
return $row;
else
return false;
}
// 写入日志文件
function WriteToDelFiles($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);
}
1. 在第33行下方(即“$arcRow = $dsql->GetOne($arcQuery);”之后)添加以下代码:
$arcBodyRow = GetArcBody($aid);
// 解析Body中的资源,并删除
$willDelFiles = GetPicsTruePath($arcBodyRow['body'], $arcRow['litpic']);
$nowtime = time();
$executetime = MyDate('Y-m-d H:i:s', $nowtime); // 获得执行时间
$msg = "\\\\r\\\\n文章标题:$arcRow[title]";
WriteToDelFiles($msg);
if (!empty($willDelFiles)) {
foreach ($willDelFiles as $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);
}
} else {
$msg = "\\\\r\\\\n未在Body中解析到数据\\\\r\\\\nBody原始数据:$arcBodyRow[body]\\\\r\\\\n时间:$executetime";
WriteToDelFiles($msg);
}