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 相关文章推荐
第十一节--重载
Nov 16 PHP
dede3.1分页文字采集过滤规则详说(图文教程)续四
Apr 03 PHP
PHP has encountered an Access Violation 错误的解决方法
Jan 17 PHP
浅析Dos下运行php.exe,出现没有找到php_mbstring.dll 错误的解决方法
Jun 29 PHP
php 解压rar文件及zip文件的方法
May 05 PHP
PHP整数取余返回负数的相关解决方法
May 15 PHP
php出现内存位置访问无效错误问题解决方法
Aug 16 PHP
PHP管理依赖(dependency)关系工具 Composer 安装与使用
Aug 18 PHP
php支持中文字符串分割的函数
May 28 PHP
phpMyAdmin安装并配置允许空密码登录
Jul 04 PHP
PHP编程实现的TCP服务端和客户端功能示例
Apr 13 PHP
ThinkPHP5.0框架实现切换数据库的方法分析
Oct 30 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之数组学习
2011/05/29 PHP
详细解读PHP的Yii框架中登陆功能的实现
2015/08/21 PHP
PDO::exec讲解
2019/01/28 PHP
PHP检测一个数组有没有定义的方法步骤
2019/07/20 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
Sample script that deletes a SQL Server database
2007/06/16 Javascript
解决AJAX中跨域访问出现'没有权限'的错误
2008/08/20 Javascript
JavaScript脚本性能优化注意事项
2008/11/18 Javascript
ext 代码生成器
2009/08/07 Javascript
javascript 函数参数限制说明
2010/11/19 Javascript
我的Node.js学习之路(二)NPM模块管理
2014/07/06 Javascript
JavaScript动态添加style节点的方法
2015/06/09 Javascript
JS 在数组指定位置插入/删除数据的方法
2017/01/12 Javascript
jQuery设计思想
2017/03/07 Javascript
微信小程序 sha1 实现密码加密实例详解
2017/07/06 Javascript
快速理解 JavaScript 中的 LHS 和 RHS 查询的用法
2017/08/24 Javascript
10行原生JS实现文字无缝滚动(超简单)
2018/01/02 Javascript
JavaScript判断日期时间差的实例代码
2018/03/01 Javascript
vue translate peoject实现在线翻译功能【新手必看】
2018/06/07 Javascript
vue2.0移动端滑动事件vue-touch的实例代码
2018/11/27 Javascript
vue-router源码之history类的浅析
2019/05/21 Javascript
ES6学习笔记之字符串、数组、对象、函数新增知识点实例分析
2020/01/22 Javascript
python使用tkinter实现简单计算器
2018/01/30 Python
对python中数组的del,remove,pop区别详解
2018/11/07 Python
在unittest中使用 logging 模块记录测试数据的方法
2018/11/30 Python
通过实例简单了解Python中yield的作用
2019/12/11 Python
Python实现i人事自动打卡的示例代码
2020/01/09 Python
韩国爱茉莉太平洋化妆品美国站:Amore Pacific US
2016/10/28 全球购物
aden + anais官方网站:婴儿襁褓、毯子、尿布和服装
2017/06/21 全球购物
《厄运打不垮的信念》教学反思
2014/04/13 职场文书
优秀纪检干部材料
2014/08/27 职场文书
信访稳定工作汇报
2014/10/27 职场文书
2015年农村党员干部主题教育活动总结
2015/03/25 职场文书
幼儿园安全工作总结2015
2015/04/20 职场文书
MySQL 查询速度慢的原因
2021/05/25 MySQL
解析python中的jsonpath 提取器
2022/01/18 Python