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 相关文章推荐
PHP以及MYSQL日期比较方法
Nov 29 PHP
用Simple Excel导出xls实现方法
Dec 06 PHP
php获取域名的google收录示例
Mar 24 PHP
PHP+Mysql+Ajax+JS实现省市区三级联动
May 23 PHP
PHP提交表单失败后如何保留已经填写的信息
Jun 20 PHP
ThinkPHP之import方法实例详解
Jun 20 PHP
php实现约瑟夫问题的方法小结
Mar 23 PHP
PHP的时间戳与具体时间转化的简单实现
Jun 13 PHP
php判断是否为ajax请求的方法
Nov 29 PHP
PHP7引入的&quot;??&quot;和&quot;?:&quot;的区别讲解
Apr 08 PHP
Laravel 错误提示本地化的实现
Oct 22 PHP
Laravel框架下载,安装及路由操作图文详解
Dec 04 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
动漫女神老婆无限好,但日本女生可能就不是这么一回事了!
2020/03/04 日漫
php cookie的操作实现代码(登录)
2010/12/29 PHP
php通过session防url攻击方法
2014/12/10 PHP
javascript实现 在光标处插入指定内容
2007/05/25 Javascript
jQuery中on()方法用法实例
2015/01/19 Javascript
jquery实现两个图片渐变切换效果的方法
2015/06/25 Javascript
JS锚点的设置与使用方法
2016/09/05 Javascript
jQuery简单获取DIV和A标签元素位置的方法
2017/02/07 Javascript
JS操作xml对象转换为Json对象示例
2017/03/25 Javascript
AngularJS使用ng-class动态增减class样式的方法示例
2017/05/18 Javascript
详解webpack 多入口配置
2017/06/16 Javascript
vue2.x+webpack快速搭建前端项目框架详解
2017/11/30 Javascript
vue微信分享 vue实现当前页面分享其他页面
2017/12/02 Javascript
json数据传到前台并解析展示成列表的方法
2018/08/06 Javascript
30分钟快速实现小程序语音识别功能
2018/11/27 Javascript
Vue表单控件数据绑定方法详解
2020/02/05 Javascript
[51:22]Fnatic vs IG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python3使用tkinter实现ui界面简单实例
2014/01/10 Python
Python基于递归算法实现的走迷宫问题
2017/08/04 Python
python web.py开发httpserver解决跨域问题实例解析
2018/02/12 Python
pycharm设置鼠标悬停查看方法设置
2019/07/29 Python
Tensorflow 模型转换 .pb convert to .lite实例
2020/02/12 Python
Python字符串及文本模式方法详解
2020/09/10 Python
搭建pypi私有仓库实现过程详解
2020/11/25 Python
CSS3实现10种Loading效果
2016/07/11 HTML / CSS
诗狄娜化妆品官方网站:Stila Cosmetics
2016/12/21 全球购物
美国隐形眼镜零售商:LensPure
2019/03/10 全球购物
Unineed中文官网:高端护肤美妆与时尚配饰,英国直邮
2020/07/23 全球购物
路由表示做什么用的?在linux环境中怎么来配置一条默认路由?
2013/06/07 面试题
装修五一活动策划案
2014/01/23 职场文书
幼儿园亲子活动方案
2014/01/29 职场文书
房屋公证委托书
2014/04/03 职场文书
《小鹰学飞》教学反思
2014/04/23 职场文书
作弊检讨书范文
2015/05/06 职场文书
2016年优秀党务工作者先进事迹材料
2016/02/29 职场文书
36个正则表达式(开发效率提高80%)
2021/11/17 Javascript