> 백엔드 개발 > PHP 튜토리얼 > PHP를 사용하여 기사의 이미지를 처리하는 방법

PHP를 사용하여 기사의 이미지를 처리하는 방법

WBOY
풀어 주다: 2016-07-25 08:55:40
원래의
1190명이 탐색했습니다.
  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__)加上各种"./""../"去给出图片目录相对于网站的目录。



원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿