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 相关文章推荐
mysql下创建字段并设置主键的php代码
May 16 PHP
PHP压缩html网页代码(清除空格,换行符,制表符,注释标记)
Apr 02 PHP
php获取文件内容最后一行示例
Jan 09 PHP
PHP中cookie和session的区别实例分析
Aug 28 PHP
php实现修改新闻时删除图片的方法
May 12 PHP
PHP执行SQL文件并将SQL文件导入到数据库
Sep 17 PHP
PHP getallheaders无法获取自定义头(headers)的问题
Mar 23 PHP
php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
Nov 16 PHP
PHP符合PSR编程规范的实例分享
Dec 21 PHP
php+mysql+jquery实现简易的检索自动补全提示功能
Apr 15 PHP
PHP中使用mpdf 导出PDF文件的实现方法
Oct 22 PHP
PHP使用Redis队列执行定时任务实例讲解
Mar 24 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函数解决SQL injection
2006/12/09 PHP
Zend Studio (eclipse)使用速度优化方法
2011/03/23 PHP
php实现rc4加密算法代码
2012/04/25 PHP
详解WordPress开发中的get_post与get_posts函数使用
2016/01/04 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
2020/05/26 PHP
让IE8支持DOM 2(不用框架!)
2009/12/31 Javascript
超酷的网页音乐播放器DewPlayer使用方法
2010/12/18 Javascript
extjs表格文本启用选择复制功能具体实现
2013/10/11 Javascript
举例讲解如何判断JavaScript中对象的类型
2016/04/22 Javascript
如何利用Promises编写更优雅的JavaScript代码
2016/05/17 Javascript
vue-axios使用详解
2017/05/10 Javascript
关于javascript作用域的常见面试题分享
2017/06/18 Javascript
JS实现div模块的截图并下载功能
2017/10/17 Javascript
jQuery无冲突模式详解
2019/01/17 jQuery
解决vue项目本地启动时无法携带cookie的问题
2021/02/06 Vue.js
Python实现的简单文件传输服务器和客户端
2015/04/08 Python
Python单元测试实例详解
2018/05/25 Python
对python多线程与global变量详解
2018/11/09 Python
浅析python3字符串格式化format()函数的简单用法
2018/12/07 Python
python3用PIL把图片转换为RGB图片的实例
2019/07/04 Python
Pycharm新建模板默认添加个人信息的实例
2019/07/15 Python
pandas中ix的使用详细讲解
2020/03/09 Python
python实现图片,视频人脸识别(dlib版)
2020/11/18 Python
python math模块的基本使用教程
2021/01/16 Python
CSS3中文字镂空、透明值、阴影效果设置示例小结
2016/03/07 HTML / CSS
HTML5 Web存储方式的localStorage和sessionStorage进行数据本地存储案例应用
2012/12/09 HTML / CSS
HTC VIVE美国官网:VR虚拟现实眼镜
2018/02/13 全球购物
Otticanet英国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/02/10 全球购物
Prototype是怎么扩展DOM的
2014/10/01 面试题
幼儿园老师寄语
2014/04/03 职场文书
拓展策划方案
2014/06/03 职场文书
图书室标语
2014/06/21 职场文书
小学学习雷锋活动总结
2014/07/03 职场文书
2014酒店客房部工作总结
2014/12/16 职场文书
第一书记观后感
2015/06/08 职场文书
Vue中Object.assign清空数据报错的解决方案
2022/03/03 Vue.js