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操作XML作为数据库的类
Dec 19 PHP
php数组函数序列 之shuffle()和array_rand() 随机函数使用介绍
Oct 29 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
Apr 25 PHP
php代码审计比较有意思的例子
May 07 PHP
ThinkPHP多表联合查询的常用方法
Mar 24 PHP
ThinkPHP让分页保持搜索状态的方法
Jul 02 PHP
Laravel框架学习笔记(一)环境搭建
Oct 15 PHP
PHP易混淆函数的区别及用法汇总
Nov 22 PHP
PHP中利用sleep函数实现定时执行功能实现代码
Aug 25 PHP
PHP处理Ajax请求与Ajax跨域问题
Feb 13 PHP
Laravel框架自定义公共函数的引入操作示例
Apr 16 PHP
Laravel 实现数据软删除功能
Aug 21 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 下载保存文件保存到本地的两种实现方法
2013/08/12 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
2016/07/21 PHP
PHP实现将base64编码字符串转换成图片示例
2018/06/22 PHP
javascript各浏览器中option元素的表现差异
2011/04/07 Javascript
JavaScript将Table导出到Excel实现思路及代码
2013/03/13 Javascript
运算符&amp;&amp;的三个不同层次
2013/04/07 Javascript
Extjs4中的分页应用结合前后台
2013/12/13 Javascript
Java/JS获取flash高宽的具体方法
2013/12/27 Javascript
JavaScript设计模式之单件模式介绍
2014/12/28 Javascript
JavaScript数据类型学习笔记
2016/01/25 Javascript
js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)
2016/01/27 Javascript
JavaScript SweetAlert插件实现超酷消息警告框
2016/01/28 Javascript
基于AngularJS的拖拽文件上传的实例代码
2017/07/15 Javascript
深入解析Vue 组件命名那些事
2017/07/18 Javascript
JavaScript中EventLoop介绍
2018/01/22 Javascript
Nodejs下使用gm圆形裁剪并合成图片的示例
2018/02/22 NodeJs
javascript设计模式之迭代器模式
2020/01/30 Javascript
vue使用echarts实现水平柱形图实例
2020/09/09 Javascript
[03:02]安得倚天剑,跨海斩长鲸——中国军团出征DOTA2国际邀请赛
2018/08/14 DOTA
[51:53]完美世界DOTA2联赛决赛日 Inki vs LBZS 第二场 11.08
2020/11/10 DOTA
Python实现爬取知乎神回复简单爬虫代码分享
2015/01/04 Python
讲解Python的Scrapy爬虫框架使用代理进行采集的方法
2016/02/18 Python
python 换位密码算法的实例详解
2017/07/19 Python
Python读取Json字典写入Excel表格的方法
2018/01/03 Python
详解Python中的分组函数groupby和itertools)
2018/07/11 Python
python实现拉普拉斯特征图降维示例
2019/11/25 Python
python是怎么被发明的
2020/06/15 Python
QA工程师岗位职责
2013/11/20 职场文书
外贸业务员求职信范文
2013/12/12 职场文书
英语道歉信范文
2014/01/09 职场文书
小学防溺水制度
2014/01/29 职场文书
学生穿着不得体检讨书
2014/10/12 职场文书
党的群众路线教育实践活动批评与自我批评发言稿
2014/10/16 职场文书
给老婆的道歉信
2015/01/20 职场文书
颐和园英文导游词
2015/01/30 职场文书
欠条样本
2015/07/03 职场文书