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 相关文章推荐
web方式ftp
Oct 09 PHP
在PHP中读取和写入WORD文档的代码
Apr 09 PHP
php urlencode()与urldecode()函数字符编码原理详解
Dec 06 PHP
CodeIgniter模板引擎使用实例
Jul 15 PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
Nov 08 PHP
php获取百度收录、百度热词及百度快照的方法
Apr 02 PHP
php提高网站效率的技巧
Sep 29 PHP
PHP内存使用情况如何获取
Oct 10 PHP
PHP连接MYSQL数据库实例代码
Jan 20 PHP
php实现单笔转账到支付宝功能
Oct 09 PHP
PHP+jQuery实现双击修改table表格功能示例
Feb 21 PHP
laravel Task Scheduling(任务调度)在windows下的使用详解
Oct 22 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引用计数器进行垃圾收集机制介绍
2012/09/19 PHP
windows环境下php配置memcache的具体操作步骤
2013/06/09 PHP
解析centos中Apache、php、mysql 默认安装路径
2013/06/25 PHP
让浏览器非阻塞加载javascript的几种方法小结
2011/04/25 Javascript
jQuery EasyUI API 中文文档 - Pagination分页
2011/09/29 Javascript
php与js的区别是什么
2013/08/05 Javascript
js为数字添加逗号并格式化数字的代码
2013/08/23 Javascript
探讨js中的双感叹号判断
2013/11/11 Javascript
Javascript毫秒数用法实例
2015/02/05 Javascript
原生Javascript插件开发实践
2017/01/09 Javascript
Java与JavaScript中判断两字符串是否相等的区别
2017/03/13 Javascript
详解vue-router 2.0 常用基础知识点之router-link
2017/05/10 Javascript
JavaScript无操作后屏保功能的实现方法
2017/07/04 Javascript
JavaScript上传文件时不用刷新页面方法总结(推荐)
2017/08/15 Javascript
将jquery.qqFace.js表情转换成微信的字符码
2017/12/01 jQuery
使用ngrok+express解决本地环境中微信接口调试问题
2018/02/26 Javascript
JS的Ajax与后端交互数据的实例
2018/08/08 Javascript
vue实现重置表单信息为空的方法
2018/09/29 Javascript
vue结合element-ui使用示例
2019/01/24 Javascript
Python爬取网页中的图片(搜狗图片)详解
2017/03/23 Python
详解Django的model查询操作与查询性能优化
2018/10/16 Python
Python理解递归的方法总结
2019/01/28 Python
Python中面向对象你应该知道的一下知识
2019/07/10 Python
细说NumPy数组的四种乘法的使用
2020/12/18 Python
Pytorch1.5.1版本安装的方法步骤
2020/12/31 Python
HTML5在线预览PDF的示例代码
2017/09/14 HTML / CSS
Marc Jacobs彩妆官网:Marc Jacobs Beauty
2017/07/03 全球购物
年度考核评语
2014/01/19 职场文书
赵乐秦在党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
高校自主招生教师推荐信
2015/03/23 职场文书
敬老院义诊活动总结
2015/05/07 职场文书
教师节获奖感言
2015/07/31 职场文书
儿童诗两首教学反思
2016/02/23 职场文书
《西游记》读后感(3篇)
2019/09/20 职场文书
Springboot-cli 开发脚手架,权限认证,附demo演示
2022/04/28 Java/Android
win10输入法不见了只能打出字母怎么解决?
2022/08/05 数码科技