array_diff($arr1,$arr2)
php数组函数之一,用来计算数组的差集.
正则匹配html图片标签
用sinaeditor添加的图片删除操作
用法之一,今天晚上在用新浪编辑器发表文章的过程中.
使用到了此函数

问题描述:

文章中有图片若干.在增加文章的过程中自动上传到网站的图片目录中
在修改文章的过程中如果对图片进行相关的删除操作.那么虽然在代码中(已经存入数据库);
已经删除了数据的标签.类似于<img src=http://......>这样的标签.但是图片的文件依旧存在于
网站上.这时候需要一定的处理

处理办法:

首先:从数据库中得到原始的文章内容
从里面得到图片的文件名
用到了正则

方法如下

复制代码代码如下:
public function getimgsinarticle($content)
 {
  $temp = array();
  $imgs = array();
  preg_match_all('/http[^\d]*[\d]+[\.](jpg|gif|png)/',$content,$temp);
  $temp = $temp[0];
  if(!empty($temp[0]))
  {
   for($i=0;$i<count($temp);$i++)
   {
    $imgs[$i] = pathinfo($temp[$i]);
    $imgs[$i] = $imgs[$i]['basename'];
   }
   return $imgs;
  }
  else
  {
   return false;
  }
 }

对正则进行下解释,先匹配http四个字母然后匹配非数字的字符若干个.匹配数字字符至
少一个,匹配点(.)一个,匹配以jpg或gif或png结尾从$congtent中查找.结果存入$temp中.
将数据库中的原始数据中的图片保存在数组中.命名为$oldimgs
这个地方我觉得应该改进下,存入后打印出来是二维数组.用起来有点费事
注:我的图片名称是类似于这个样子命名的:"201111291322589013.jpg"

第二步:
从用户提交过来的内容中找到所有的图片方法如上.得到数组二命名为$newimgs
对arr1和arr2求差集方法如下
--也就是说如果原始数据中的图片不存在于用户新提交的内容中.那么将删除这个图片.

复制代码代码如下:
$oldimgs = $this->getimgsinarticle($oldarticledata['article_content']);
   $newimgs = $this->getimgsinarticle($data['articlecontent']);
   //print_r($newimgs);
   $newimgs = empty($newimgs)?array():$newimgs;
   if($oldimgs!=false)
   {
    $diff = array_diff($oldimgs,$newimgs);
    $diff = array_values($diff);
    if(!empty($diff))
    {
     for($i=0;$i<count($diff);$i++)
     {
      $this->delimg($diff[$i],ARTICLE_IMG_DIR);
     }
    }
   }

删除图片的方法如下 很简单.

复制代码代码如下:
 public function delimg($imgname,$dir)
 {
  @unlink($dir.'/'.$imgname);
  return true;
 }

这样我的目的就达到了.当用户编辑了带有图片的文章.如果删除了图片.那么相应的图片也会从网站上删除
得到文章中的图片名称的方法还可以应用到删除文章的过程中.

在删除图片的方法中的$dir可以用realpath(__FILE__)加上各种"./""../"去给出图片目录相对于网站的目录
对于得到html中的路径这里的正则写的不是很好.有待研究.最近发现一本正则的书.很不错
精通正则表达式第三版  Jeffrey E.F. Friedl著 ,余晟(cheng)译

最新文章

  1. 360急速浏览器BUG,POST表单提交参数丢失
  2. Icinga使用总结
  3. 第一章 Java的I/O演进之路
  4. 从钉钉微应用定制化导航栏看如何实现Hydrid App开发框架
  5. .NET异常问题总结
  6. BIEE 11g 安装
  7. ios7.0结合storyborad实现页面跳转的总结
  8. Linux dd 命令
  9. BugZilla的安装过程简明教程
  10. 转:为什么Eclipse中 按 F3 无效
  11. 《Linear Algebra and Its Applications》-chaper6-正交性和最小二乘法-最小二乘问题
  12. JDK5-枚举
  13. Away 3d 入门demo
  14. 使用 Live555 搭建流媒体服务器
  15. ubuntu16.04卸载软件
  16. 关于 Bootstrap的知识
  17. How To Size Your Apache Flink&#174; Cluster: A Back-of-the-Envelope Calculation
  18. linux shell数据重定向(输入重定向与输出重定向)详细分析
  19. 启动tomcat 报错:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
  20. MFC如何为程序添加图标

热门文章

  1. mybatis使用-helloword(一)
  2. Spring Boot 定时任务单线程和多线程
  3. Eclipse全局搜索
  4. git分支合并概念
  5. java构造函数重载this(true)
  6. [Python] Create a minimal website in Python using the Flask Microframework
  7. linux下select,poll,epoll的使用与重点分析
  8. CodeForces 453A 概率题
  9. 【JMeter连接SQLServer】採用window鉴权方式连接(原创)
  10. zoj3886--Nico Number(素数筛+线段树)