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 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
Oct 09 PHP
用php或asp创建网页桌面快捷方式的代码
Mar 23 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装(win+linux)
May 05 PHP
thinkphp实现163、QQ邮箱收发邮件的方法
Dec 18 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
Feb 26 PHP
yii2中的rules 自定义验证规则详解
Apr 19 PHP
Yii2增删改查之查询 where参数详细介绍
Aug 08 PHP
Apache PHP MySql安装配置图文教程
Aug 27 PHP
Yii2框架实现数据库常用操作总结
Feb 08 PHP
thinkPHP分页功能实例详解
May 05 PHP
php批量删除操作(数据访问)
May 23 PHP
如何在centos8自定义目录安装php7.3
Nov 28 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三层结构(上) 简单三层结构
2010/07/04 PHP
php中利用post传递字符串重定向的实现代码
2011/04/21 PHP
php常用Stream函数集介绍
2013/06/24 PHP
destoon实现公司新闻详细页添加评论功能的方法
2014/07/15 PHP
PHP批量查询WordPress留言者E-mail地址实现方法
2015/02/15 PHP
在IIS下安装PHP扩展的方法(超简单)
2017/04/10 PHP
php经典趣味算法实例代码
2020/01/21 PHP
JavaScript 乱码问题
2009/08/06 Javascript
js中浮点型运算BUG的解决方法说明
2014/01/06 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
2014/01/11 Javascript
JavaScript获取网页表单提交方式的方法
2015/04/02 Javascript
javascript排序函数实现数字排序
2015/06/26 Javascript
JavaScript操作表单实例讲解(上)
2016/06/20 Javascript
jquery 校验中国身份证号码实例详解
2017/04/11 jQuery
基于layer.js实现收货地址弹框选择然后返回相应的地址信息
2017/05/26 Javascript
浅谈angular.js跨域post解决方案
2017/08/30 Javascript
详解JavaScript的BUG和错误
2018/05/07 Javascript
vue element-ui之怎么封装一个自己的组件的详解
2019/05/20 Javascript
vue data引入本地图片的两种方式小结
2019/11/13 Javascript
[00:58]2016年国际邀请赛勇士令状宣传片
2016/06/01 DOTA
python检查指定文件是否存在的方法
2015/07/06 Python
Python实现MySQL操作的方法小结【安装,连接,增删改查等】
2017/07/12 Python
Python3爬虫教程之利用Python实现发送天气预报邮件
2018/12/16 Python
Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】
2018/12/26 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
2019/09/16 Python
Python获取时间戳代码实例
2019/09/24 Python
tensorflow pb to tflite 精度下降详解
2020/05/25 Python
django创建css文件夹的具体方法
2020/07/31 Python
PyTorch 导数应用的使用教程
2020/08/31 Python
美国最流行的男士时尚网站:Touch of Modern
2018/02/05 全球购物
【魔兽争霸3重制版】原版画面与淬火MOD画面对比
2021/03/26 魔兽争霸
幼儿园门卫岗位职责
2014/02/14 职场文书
工作说明书范文
2014/05/07 职场文书
指导老师鉴定意见
2015/06/05 职场文书
安全生产奖惩制度
2015/08/06 职场文书
2016年“我们的节日·重阳节”主题活动总结
2016/04/01 职场文书