php笔记之:文章中图片处理的使用


Posted in PHP onApril 26, 2013

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

PHP 相关文章推荐
BBS(php &amp; mysql)完整版(二)
Oct 09 PHP
PHP中的extract的作用分析
Apr 09 PHP
破解图片防盗链的代码(asp/php)测试通过
Jul 02 PHP
php cookies中删除的一般赋值方法
May 07 PHP
php数据库抽象层 PDO
May 07 PHP
微博短链接算法php版本实现代码
Sep 15 PHP
ThinkPHP CURD方法之field方法详解
Jun 18 PHP
ThinkPHP表单自动提交验证实例教程
Jul 18 PHP
php5.4以下版本json不支持不转义内容中文的解决方法
Jan 13 PHP
项目中应用Redis+Php的场景
May 22 PHP
PHP+Redis 消息队列 实现高并发下注册人数统计的实例
Jan 29 PHP
PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能
May 31 PHP
php笔记之:初探PHPcms模块开发介绍
Apr 26 #PHP
input file获得文件根目录简单实现
Apr 26 #PHP
dhtmlxTree目录树增加右键菜单以及拖拽排序的实现方法
Apr 26 #PHP
php上传apk后自动提取apk包信息的使用(示例下载)
Apr 26 #PHP
关于二级目录拖拽排序的实现(源码示例下载)
Apr 26 #PHP
使用php发送有附件的电子邮件-(PHPMailer使用的实例分析)
Apr 26 #PHP
PHP中基于ts与nts版本- vc6和vc9编译版本的区别详解
Apr 26 #PHP
You might like
PHP-redis中文文档介绍
2013/02/07 PHP
php5.3 goto函数介绍和示例
2014/03/21 PHP
header与缓冲区之间的深层次分析
2016/07/30 PHP
PHP删除二维数组中相同元素及数组重复值的方法示例
2017/05/05 PHP
PHP中“=&gt;
2019/03/01 PHP
php自动加载代码实例详解
2021/02/26 PHP
轻量级 JS ToolTip提示效果
2010/07/20 Javascript
jQuery 淡出一个图像到另一个图像的实现代码
2013/06/12 Javascript
利用js读取动态网站从服务器端返回的数据
2014/02/10 Javascript
js判断浏览器类型及设备(移动页面开发)
2015/07/30 Javascript
sso跨域写cookie的一段js脚本(推荐)
2016/05/25 Javascript
基于Bootstrap的UI扩展 StyleBootstrap
2016/06/17 Javascript
浅谈js和css内联外联注意事项
2016/06/30 Javascript
JS简单实现点击复制链接的方法
2016/08/03 Javascript
12个非常有用的JavaScript技巧
2017/05/17 Javascript
Node.js 8 中的 util.promisify的详解
2017/06/12 Javascript
学习jQuery中的noConflict()用法
2018/09/28 jQuery
浅谈JavaScript 代码整洁之道
2018/10/23 Javascript
详解element-ui日期时间选择器的日期格式化问题
2019/04/08 Javascript
webpack HappyPack实战详解
2019/10/08 Javascript
js实现的在本地预览图片功能示例
2019/11/09 Javascript
ES6箭头函数和扩展实例分析
2020/05/23 Javascript
python通过定义一个类实例作为ftp回调方法
2015/05/04 Python
python正向最大匹配分词和逆向最大匹配分词的实例
2018/11/14 Python
将matplotlib绘图嵌入pyqt的方法示例
2020/01/08 Python
python的json包位置及用法总结
2020/06/21 Python
Python获取excel内容及相关操作代码实例
2020/08/10 Python
python 获取字典键值对的实现
2020/11/12 Python
Omio美国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/08 全球购物
美国领先的医疗警报服务:Philips Lifeline
2018/03/12 全球购物
什么是测试驱动开发(TDD)
2012/02/15 面试题
最受欢迎的自我评价
2013/12/22 职场文书
药品业务员岗位职责
2014/04/17 职场文书
师德师风个人总结
2015/02/06 职场文书
大学文艺委员竞选稿
2015/11/19 职场文书
2019年度开业庆典祝福语大全!
2019/07/05 职场文书