Heim >Backend-Entwicklung >PHP-Tutorial >php处理文章中图片的方法

php处理文章中图片的方法

WBOY
WBOYOriginal
2016-07-25 08:55:401196Durchsuche
  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__)加上各种"./""../"去给出图片目录相对于网站的目录。



Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn