首先,在"/include"目录下建立"extend.func.php"文件.
然后,将以下内容保存在"extend.func.php"文件中,一共三个函数:





//解析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
[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

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);

}



接下来打开"/dede/inc/inc_batchup.php"文件。

1:在33行下方加入,也就是"$arcRow = $dsql->GetOne($arcQuery);"下方:

$arcBodyRow = GetArcBody($aid);

2:在138行下方加入,也就是"return true;"上方:





//解析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);

}//END foreach

}

else

{

$msg =
"\r\n未在Body中解析到数据\r\nBody原始数据:$arcBodyRow[body]\r\n时间:$executetime";

WriteToDelFiles($msg);

}



至此,全部修改完成,删除文章时,程序会分析Body中的图片地址,然后删除.并在/data/目录下,产生日志记录文件:del_body_file.txt。

跟版网-专业织梦模板下载平台,转载请注明出处:http://www.genban.org/news/dedecms-7438.html

Dede 删除文档同时文章中的图片的方法的更多相关文章

  1. [No00005B] word快速插入当前时间&怎样一次性删除文档中的全部链接

    按Alt+Shift+D键来插入系统日期 按Alt+Shift+T键则插入系统当前时间 同时,在插入的时间上右键->编辑域 一次性删除文档中的全部链接: 方法1:一劳永逸法(推荐) 因为链接大多 ...

  2. MongoDB学习笔记二:创建、更新及删除文档

    插入并保存文档 对目标集使用insert方法插入一个文档: > db.foo.insert({"bar" : "baz"}) 这个操作会给文档增加一个&q ...

  3. Elasticsearch 创建、更新、删除文档、处理冲突

    ----创建新文档---- 1._index,_type和_id的组合可以唯一标识一个文档,所以确保一个新文档的最简单的办法就是,使用索引请求的POST形式让elsticsearch自动生成唯一_id ...

  4. MongoDB改动、删除文档的域属性实例

    MongoDB改动.删除文档的域属性实例 在站点的开发中,可能最初的设计不合理.或者后期业务的变更,会造成文档结构会有些无用的属性.须要去删除或改动.因为MongoDB 是无 Schema 的,不像关 ...

  5. Mongodb(3)插入文档,更新文档,删除文档

    insert() 方法 要插入数据到 MongoDB 集合,需要使用 MongoDB 的  insert() 或 save() 方法. 插入文档:db.COLLECTION_NAME.insert(d ...

  6. MongoDB学习笔记-创建、更新、删除文档

    创建     MongoDB中使用insert方法来向集合插入文档,然后保存到MongoDB中.     db.foo.insert({"hehe":"呵呵"} ...

  7. 创建、更新、删除文档。 --- Mongodb权威指南阅读。

    插入文档: db.foo.insert({ "key" : "value"}); 使用insert插入一个数据,文档中如果没有_id 会自动给文档增加_id. ...

  8. mongodb remove删除文档的用法

    在看<mongoDB权威指南>中,在删除文档时,出现问题: 书中介绍:采用db.foo.remove()命令则可以删除foo集合中所有的文档,但是在执行该命令时,shell客户端却报错. ...

  9. MongoDB 教程(七):插入文档、更新文档、删除文档

    MongoDB 插入文档 文档的数据结构和JSON基本一样. 所有存储在集合中的数据都是BSON格式 —— BSON是一种类json的二进制形式的存储格式,简称Binary JSON. MongoDB ...

随机推荐

  1. ASP.NET Core使用静态文件、目录游览与MIME类型管理

    前言 今天我们来了解了解ASP.NET Core中的静态文件的处理方式. 以前我们寄宿在IIS中的时候,很多静态文件的过滤 和相关的安全措施 都已经帮我们处理好了. ASP.NET Core则不同,因 ...

  2. Python 项目实践三(Web应用程序)第四篇

    接着上节继续学习,本章将建立用户账户 Web应用程序的核心是让任何用户都能够注册账户并能够使用它,不管用户身处何方.在本章中,你将创建一些表单,让用户能够添加主题和条目,以及编辑既有的条目.你还将学习 ...

  3. HTTP结构

    HTTP结构 转载请注明出处:HTTP结构简介 HTTP通信过程包括从客户端发往服务器的请求和服务器返回客户端的响应,这篇文章就简单的了解一下HTTP请求和响应的结构与协议本身的状态管理. 用户HTT ...

  4. hadoop的安装和配置(三)完全分布式模式

    博主会用三篇文章为大家详细说明hadoop的三种模式: 本地模式 伪分布模式 完全分布模式 完全分布式模式: 前面已经说了本地模式和伪分布模式,这两种在hadoop的应用中并不用于实际,因为几乎没人会 ...

  5. UIViewController生命周期控制-开发规范

    从网上各位iOS们收集并总结: 各方法使用: init 中初始化一些UI组件,比如UIButton,UILabel等 loadView 中 createFields 接受参数,初始化变量 create ...

  6. 第十六章:Python の Web开发基础(三) jQuery与Ajax

    本課主題 jQuery 介绍 Ajax 介绍 jQuery 介绍 选择器 jQuery 的选择器分不同的种类,主要目的是用来查找目标的 HTML 标签,方便对目标标签进行操作,比如找到 <li& ...

  7. .NET使用Office Open XML导出超大数量数据到 Excel

    我相信很多人在做项目的都碰到过Excel数据导出的需求,我从最开始使用最原始的HTML拼接(将需要导出的数据拼接成TABLE标签)到后来happy的使用开源的NPOI, EPPlus等开源组件导出EX ...

  8. linux下centos6.8相关配置,以及音频相关配置

    一:安装上传下载命令 1:cd /tmp 2:wget http://www.ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz 3:tar zxvf lrzsz-0. ...

  9. SharePoint客户端js对象模型

    'use strict'; var context = SP.ClientContext.get_current(); var user = context.get_web().get_current ...

  10. Android基础_web通信

    一.发展史 1G 模拟制式手机,只能进行语音通话2G 数字制式手机,增加接收数据等功能3G 智能手机,它已经成了集语音通信和多媒体通信相结合,并且包括图像.音乐.网页浏览.电话会议以及其它一些信息服务 ...