php批量下载网页图片并替换路径为本地

我们现在要复制别人网站上的带有图片的内容到自己网站,这样我必须下载别人网的图片,然后保存到本地,再把内容中的图片地址替换成我们本地的,这里我们要借助于php中preg_match_all,file_get_contents,str_replace三个函数即可。

一篇文章复制过来,发现图片路径都是别人网站的,如何一键下载这些图片到本地,并且修改成为本地的路径呢,代码如下:

  1. /**
  2. * 获取替换文章中的图片路径
  3. * @param string $xstr 内容 采集网页的content
  4. * @param string $keyword 创建照片的文件名 我写upimg
  5. * @param string $oriweb 网址 一般写null
  6. * @return string
  7. *
  8. */
  9. function replaceimg($xstr,$keyword, $oriweb){
  10. $basedir = dirname(__FILE__);
  11. //保存路径
  12. $d = date('Ym', time());
  13. $dirslsitss = $basedir.'/../uploads/'.$keyword.'/'.$d;//分类是否存在
  14. if(!is_dir($dirslsitss)) {
  15. @mkdir($dirslsitss, 0777);
  16. }
  17. //匹配图片的src
  18. preg_match_all('#<img.*?src="([^"]*)"[^>]*>#i', $xstr, $match);
  19. foreach($match[1] as $imgurl){
  20. $imgurl = $imgurl;
  21. if(is_int(strpos($imgurl, 'http'))){
  22. $arcurl = $imgurl;
  23. } else {
  24. $arcurl = $oriweb.$imgurl;
  25. }
  26. $img=file_get_contents($arcurl);
  27. if(!emptyempty($img)) {
  28. //保存图片到服务器
  29. $fileimgname = time()."-".rand(1000,9999).".jpg";
  30. $filecachs=$dirslsitss."/".$fileimgname;
  31. $fanhuistr = file_put_contents( $filecachs, $img );
  32. $saveimgfile = "/uploads/$keyword"."/".$d."/".$fileimgname;
  33. $xstr=str_replace($imgurl,$saveimgfile,$xstr);
  34. }
  35. }
  36. return $xstr;
  37. }