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 相关文章推荐
Windows下PHP5和Apache的安装与配置
Sep 05 PHP
编写自己的php扩展函数
Oct 09 PHP
PHP脚本的10个技巧(5)
Oct 09 PHP
PHP 单引号与双引号的区别
Nov 24 PHP
鸡肋的PHP单例模式应用详解
Jun 03 PHP
PHP删除目录及目录下所有文件的方法详解
Jun 06 PHP
利用php获取服务器时间的实现代码
Jun 07 PHP
ThinkPHP行为扩展Behavior应用实例详解
Jul 22 PHP
php实现图片缩略图的方法
Mar 29 PHP
PHP利用超级全局变量$_GET来接收表单数据的实例
Nov 05 PHP
php使用str_shuffle()函数生成随机字符串的方法分析
Feb 17 PHP
PHP实现中国公民身份证号码有效性验证示例代码
May 03 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
2020显卡排行榜天梯图 显卡天梯图2020年3月最新版
2020/04/02 数码科技
Smarty结合Ajax实现无刷新留言本实例
2007/01/02 PHP
PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
2011/12/05 PHP
PHP对象转换为数组函数(递归方法)
2012/02/04 PHP
PHP无限极分类函数的实现方法详解
2017/04/15 PHP
php微信公众号开发之音乐信息
2018/10/20 PHP
jquery click([data],fn)使用方法实例介绍
2013/07/08 Javascript
jQuery点击弹出下拉菜单的小例子
2013/08/01 Javascript
js中的eventType事件及其浏览器支持性介绍
2013/11/29 Javascript
window.location不跳转的问题解决方法
2014/04/17 Javascript
JQuery对表格进行操作的常用技巧总结
2014/04/23 Javascript
javascript验证邮件地址和MX记录的方法
2015/06/16 Javascript
JavaScript 基础函数_深入剖析变量和作用域
2016/05/18 Javascript
jQuery实现每隔几条元素增加1条线的方法
2016/06/27 Javascript
[05:39]2014DOTA2西雅图国际邀请赛 淘汰赛7月14日TOPPLAY
2014/07/14 DOTA
[00:43]2016完美“圣”典风云人物:单车宣传片
2016/12/02 DOTA
python实现从字符串中找出字符1的位置以及个数的方法
2014/08/25 Python
python中bisect模块用法实例
2014/09/25 Python
Python使用正则匹配实现抓图代码分享
2015/04/02 Python
Python字典的基本用法实例分析【创建、增加、获取、修改、删除】
2019/03/05 Python
python3转换code128条形码的方法
2019/04/17 Python
解决Python使用列表副本的问题
2019/12/19 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
2020/02/04 Python
使用豆瓣源来安装python中的第三方库方法
2021/01/26 Python
传播学专业毕业生自荐信
2013/11/04 职场文书
学生拾金不昧表扬信
2014/01/21 职场文书
文明村创建实施方案
2014/03/27 职场文书
个人求职信范文
2014/05/24 职场文书
销售岗位职责范本
2014/06/12 职场文书
本科毕业生应聘求职信
2014/07/06 职场文书
优秀员工事迹材料
2014/12/20 职场文书
转让协议书
2015/01/27 职场文书
出纳岗位职责
2015/01/31 职场文书
担保公司2015年终工作总结
2015/10/14 职场文书
python glom模块的使用简介
2021/04/13 Python
python APScheduler执行定时任务介绍
2022/04/19 Python