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中日期加减法运算实现代码
Dec 08 PHP
php图片加中文水印实现代码分享
Oct 31 PHP
浅析php数据类型转换
Jan 09 PHP
PHP mail()函数使用及配置方法
Jan 14 PHP
函数中使用require_once问题深入探讨 优雅的配置文件定义方法推荐
Jul 02 PHP
PHP实现显示照片exif信息的方法
Jul 11 PHP
smarty中英文多编码字符截取乱码问题解决方法
Oct 28 PHP
php连接与操作PostgreSQL数据库的方法
Dec 25 PHP
PHP使用redis实现统计缓存mysql压力的方法
Nov 14 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
Nov 17 PHP
php压缩文件夹最新版
Jul 18 PHP
php7中停止php-fpm服务的方法详解
May 09 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读取文件内容后清空文件示例代码
2014/03/18 PHP
PHP易混淆函数的区别及用法汇总
2014/11/22 PHP
php实现图片上传并利用ImageMagick生成缩略图
2016/03/14 PHP
[原创]php正则删除html代码中class样式属性的方法
2017/05/24 PHP
建议大家看下JavaScript重要知识更新
2007/07/08 Javascript
JQuery EasyUI 对话框的使用方法
2010/10/24 Javascript
JavaScript创建对象的方式小结(4种方式)
2015/12/17 Javascript
尝试动手制作javascript放大镜效果
2015/12/25 Javascript
详解Bootstrap四种图片样式
2016/01/04 Javascript
JavaScript提高性能知识点汇总
2016/01/15 Javascript
jQuery使用$.each遍历json数组的简单实现方法
2016/04/18 Javascript
ES6中module模块化开发实例浅析
2017/04/06 Javascript
原生JavaScript实现日历功能代码实例(无引用Jq)
2019/09/23 Javascript
JS实现字体背景跑马灯
2020/01/06 Javascript
python爬虫常用的模块分析
2014/08/29 Python
Python数据结构之Array用法实例
2014/10/09 Python
Python复制目录结构脚本代码分享
2015/03/06 Python
python+django加载静态网页模板解析
2017/12/12 Python
python3 读取Excel表格中的数据
2018/10/16 Python
python/sympy求解矩阵方程的方法
2018/11/08 Python
python argparser的具体使用
2019/11/10 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
2020/03/12 Python
Python OpenCV去除字母后面的杂线操作
2020/07/05 Python
OpenCV4.1.0+VS2017环境配置的方法步骤
2020/07/09 Python
python 绘制国旗的示例
2020/09/27 Python
python爬取代理IP并进行有效的IP测试实现
2020/10/09 Python
FILA斐乐中国官方商城:意大利运动品牌
2017/01/25 全球购物
康拓普公司Java笔面试
2016/09/23 面试题
本科生职业生涯规划书范文
2014/01/21 职场文书
《阳光》教学反思
2014/02/23 职场文书
校庆接待方案
2014/03/18 职场文书
毕业评语大全
2014/05/04 职场文书
个人收入证明模板
2014/09/18 职场文书
学生打架检讨书
2014/10/20 职场文书
JS创建或填充任意长度数组的小技巧汇总
2021/10/24 Javascript
MySQL数据库10秒内插入百万条数据的实现
2021/11/01 MySQL