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.ini中文版
Oct 09 PHP
BBS(php &amp; mysql)完整版(一)
Oct 09 PHP
基于mysql的论坛(2)
Oct 09 PHP
处理php自动反斜杠的函数代码
Jan 05 PHP
使用bcompiler对PHP文件进行加密的代码
Aug 29 PHP
php数组函数序列 之shuffle()和array_rand() 随机函数使用介绍
Oct 29 PHP
有关php运算符的知识大全
Nov 03 PHP
判断php数组是否为索引数组的实现方法
Jun 13 PHP
ThinkPHP模板IF标签用法详解
Jul 01 PHP
smarty自定义函数用法示例
May 20 PHP
PHP环境搭建(php+Apache+mysql)
Nov 14 PHP
PHP设计模式(观察者模式)
Jul 07 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实现网上点歌(二)
2006/10/09 PHP
纯PHP生成的一个树叶图片画图例子
2014/04/16 PHP
Javascript与PHP验证用户输入URL地址是否正确
2014/10/09 PHP
php自定义函数实现二维数组按指定key排序的方法
2016/09/29 PHP
百度 popup.js 完美修正版非常的不错 脚本之家推荐
2009/04/17 Javascript
处理文本部分内容的TextRange对象应用实例
2014/07/29 Javascript
JS验证IP,子网掩码,网关和MAC的方法
2015/07/02 Javascript
jQuery+html5+css3实现圆角无刷新表单带输入验证功能代码
2015/08/21 Javascript
js+css实现的圆角边框TAB选项卡滑动门代码分享(2款)
2015/08/26 Javascript
适用于javascript开发者的Processing.js入门教程
2016/02/24 Javascript
ionic实现滑动的三种方式
2016/08/27 Javascript
D3.js实现折线图的方法详解
2016/09/21 Javascript
js获取隐藏元素的宽高
2017/02/24 Javascript
bootstrap+jQuery 实现下拉菜单中复选框全选和全不选效果
2017/06/12 jQuery
前端跨域的几种解决方式总结(推荐)
2017/08/16 Javascript
js前端导出Excel的方法
2017/11/01 Javascript
JS控制鼠标拒绝点击某一按钮的实例
2017/12/29 Javascript
JS中使用new Option()实现时间联动效果
2018/12/10 Javascript
[49:08]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.27
2020/12/01 DOTA
[28:07]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第二场 12.13
2020/12/17 DOTA
用Python中的__slots__缓存资源以节省内存开销的方法
2015/04/02 Python
疯狂上涨的Python 开发者应从2.x还是3.x着手?
2017/11/16 Python
python实现简单遗传算法
2018/03/19 Python
python实现图片文件批量重命名
2020/03/23 Python
python opencv3实现人脸识别(windows)
2018/05/25 Python
Python告诉你木马程序的键盘记录原理
2019/02/02 Python
PyQt QListWidget修改列表项item的行高方法
2019/06/20 Python
python实现将视频按帧读取到自定义目录
2019/12/10 Python
材料成型及控制工程专业求职信
2014/06/19 职场文书
预防艾滋病宣传标语
2014/06/25 职场文书
高等学院职业生涯规划书范文
2014/09/16 职场文书
2014年护士工作总结范文
2014/11/11 职场文书
招商银行工作证明
2015/06/17 职场文书
部门主管竞聘书
2015/09/15 职场文书
MySQL系列之十四 MySQL的高可用实现
2021/07/02 MySQL
redis的list数据类型相关命令介绍及使用
2022/01/18 Redis