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的无限分类实现想法~
Jan 02 PHP
Cakephp 执行主要流程
Mar 24 PHP
如何在symfony中导出为CSV文件中的数据
Oct 06 PHP
php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
Jun 13 PHP
PHP程序级守护进程的实现与优化的使用概述
May 02 PHP
PHP远程采集图片详细教程
Jul 01 PHP
国产PHP开发框架myqee新手快速入门教程
Jul 14 PHP
php简单分页类实现方法
Feb 26 PHP
PHP图像识别技术原理与实现
Oct 27 PHP
php动态读取数据清除最右边距的方法
Apr 12 PHP
laravel dingo API返回自定义错误信息的实例
Sep 29 PHP
浅谈PHP5.6 与 PHP7.0 区别
Oct 09 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
C# Assembly类访问程序集信息
2009/06/13 PHP
php ci框架中加载css和js文件失败的解决方法
2014/03/03 PHP
php+ajax实现图片文件上传功能实例
2014/06/17 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
2015/12/23 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
2016/04/07 PHP
PHP iconv()函数字符编码转换的问题讲解
2019/03/22 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
关闭浏览器时提示onbeforeunload事件
2013/12/25 Javascript
Node.js中child_process实现多进程
2015/02/03 Javascript
Angularjs 实现分页功能及示例代码
2016/09/14 Javascript
jQuery 获取select选中值及清除选中状态
2016/12/13 Javascript
JavaScript数据类型和变量_动力节点Java学院整理
2017/06/26 Javascript
微信小程序实现图片预览功能
2018/01/31 Javascript
vue源码学习之Object.defineProperty对象属性监听
2018/05/30 Javascript
vue实现简单的MVVM框架
2018/08/05 Javascript
vue 属性拦截实现双向绑定的实例代码
2018/10/24 Javascript
JavaScript实现的鼠标跟随特效示例【2则实例】
2018/12/22 Javascript
vue父组件给子组件的组件传值provide inject的方法
2019/10/23 Javascript
解决Vue-Router升级导致的Uncaught (in promise)问题
2020/08/07 Javascript
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
Python中使用gzip模块压缩文件的简单教程
2015/04/08 Python
python链接Oracle数据库的方法
2015/06/28 Python
【python】matplotlib动态显示详解
2019/04/11 Python
python pygame实现五子棋小游戏
2020/10/26 Python
Pytorch之contiguous的用法
2019/12/31 Python
pytorch 数据处理:定义自己的数据集合实例
2019/12/31 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
2020/04/27 Python
Python ConfigParser模块的使用示例
2020/10/12 Python
阿巴庭院:Abba Patio
2019/06/18 全球购物
前台文员的岗位职责
2013/11/14 职场文书
警察先进个人事迹材料
2014/05/16 职场文书
人力资源管理系自荐信
2014/05/31 职场文书
初三毕业评语
2014/12/26 职场文书
python Polars库的使用简介
2021/04/21 Python
如何用Node.js编写内存效率高的应用程序
2021/04/30 Javascript
mysql5.7使用binlog 恢复数据的方法
2021/06/03 MySQL