当前位置:Gxlcms > PHP教程 > php处理文章中图片的方法

php处理文章中图片的方法

时间:2021-07-01 10:21:17 帮助过:5人阅读

  1. public function getimgsinarticle($content)
  2. {
  3. $temp = array();
  4. $imgs = array();
  5. preg_match_all('/http[^\d]*[\d]+[\.](jpg|gif|png)/',$content,$temp);
  6. $temp = $temp[0];
  7. if(!empty($temp[0]))
  8. {
  9. for($i=0;$i {
  10. $imgs[$i] = pathinfo($temp[$i]);
  11. $imgs[$i] = $imgs[$i]['basename'];
  12. }
  13. return $imgs;
  14. }
  15. else
  16. {
  17. return false;
  18. }
  19. }

以上用到了正则表达式,解释下:先匹配http四个字母然后匹配非数字的字符若干个。 匹配数字字符至少一个,匹配点(.)一个,匹配以jpg或gif或png结尾从$congtent中查找。结果存入$temp中。 将数据库中的原始数据中的图片保存在数组中,命名为$oldimgs。

此处需要改进下,存入后打印出来是二维数组,用起来有点费事。

说明,我的图片名称是类似于这个样子命名的:"201111291322589013.jpg"

第二步: 从用户提交过来的内容中找到所有的图片方法如上.得到数组二命名为$newimgs 对arr1和arr2求差集方法如下 --也就是说如果原始数据中的图片不存在于用户新提交的内容中.那么将删除这个图片.

  1. $oldimgs = $this->getimgsinarticle($oldarticledata['article_content']);
  2. $newimgs = $this->getimgsinarticle($data['articlecontent']);
  3. //print_r($newimgs);
  4. $newimgs = empty($newimgs)?array():$newimgs;
  5. if($oldimgs!=false)
  6. {
  7. $diff = array_diff($oldimgs,$newimgs);
  8. $diff = array_values($diff);
  9. if(!empty($diff))
  10. {
  11. for($i=0;$i {
  12. $this->delimg($diff[$i],ARTICLE_IMG_DIR);
  13. }
  14. }
  15. }

删除图片:

  1. public function delimg($imgname,$dir)
  2. {
  3. @unlink($dir.'/'.$imgname);
  4. return true;
  5. }

当用户编辑了带有图片的文章.如果删除了图片.那么相应的图片也会从网站上删除,得到文章中的图片名称的方法还可以应用到删除文章的过程中。

在删除图片的方法中的$dir可以用realpath(__FILE__)加上各种"./""../"去给出图片目录相对于网站的目录。

人气教程排行