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的ASP防火墙
Oct 09 PHP
php session 错误
May 21 PHP
php面向对象全攻略 (九)访问类型
Sep 30 PHP
PHP 判断变量类型实现代码
Oct 23 PHP
php代码审计比较有意思的例子
May 07 PHP
PHP+memcache实现消息队列案例分享
May 21 PHP
php中convert_uuencode()与convert_uuencode函数用法实例
Nov 22 PHP
php保存信息到当前Session的方法
Mar 16 PHP
php输出指定时间以前时间格式的方法
Mar 21 PHP
PHP实现HTML页面静态化的方法
Nov 04 PHP
php 如何获取文件的后缀名
Jun 05 PHP
php抽象方法和普通方法的区别点总结
Oct 13 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
德劲1107的电路分析与打磨
2021/03/02 无线电
php实现12306余票查询、价格查询示例
2014/04/17 PHP
php微信高级接口群发 多客服
2016/06/23 PHP
php rmdir使用递归函数删除非空目录实例详解
2016/10/20 PHP
Laravel Validator自定义错误返回提示消息并在前端展示
2019/05/09 PHP
jquery乱码与contentType属性设置问题解决方案
2013/01/07 Javascript
js中把JSON字符串转换成JSON对象最好的方法
2014/03/21 Javascript
基于JS实现PHP的sprintf函数实例
2015/11/14 Javascript
快速实现jQuery多级菜单效果
2017/02/01 Javascript
addEventListener()与removeEventListener()解析
2017/04/20 Javascript
微信小程序组件 marquee实例详解
2017/06/23 Javascript
vue2.0全局组件之pdf详解
2017/06/26 Javascript
vue 路由页面之间实现用手指进行滑动的方法
2018/02/23 Javascript
JavaScript中变量提升与函数提升经典实例分析
2018/07/26 Javascript
electron实现qq快捷登录的方法示例
2018/10/22 Javascript
详解使用element-ui table组件的筛选功能的一个小坑
2018/11/02 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
2019/09/23 Javascript
使用vue cli4.x搭建vue项目的过程详解
2020/05/08 Javascript
[48:26]VGJ.S vs infamous Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
python 专题九 Mysql数据库编程基础知识
2017/03/16 Python
Python算法之图的遍历
2017/11/16 Python
python 匹配url中是否存在IP地址的方法
2018/06/04 Python
python调用tcpdump抓包过滤的方法
2018/07/18 Python
python实现根据文件关键字进行切分为多个文件的示例
2018/12/10 Python
Python通用循环的构造方法实例分析
2018/12/19 Python
详解python tkinter 图片插入问题
2020/09/03 Python
Python实现钉钉/企业微信自动打卡的示例代码
2021/02/02 Python
html5画布旋转效果示例
2014/01/27 HTML / CSS
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
学校七一活动方案
2014/01/19 职场文书
《这儿真好》教学反思
2014/02/22 职场文书
论群众路线学习笔记
2014/11/06 职场文书
检讨书怎么写
2015/01/23 职场文书
导游词之千岛湖
2019/09/23 职场文书
浅谈redis缓存在项目中的使用
2021/05/20 Redis
python数据可视化使用pyfinance分析证券收益示例详解
2021/11/20 Python