当前位置:编程学习 > php >>

PHP自动把文章内容中的远程图片采集保存到本地的方法和技术

我文章内容,发布的时候,想自动把里面的远程图片抠出来并且保存到本地
答案:
  1. 第一步. 先从文章中把所有<img ...> 用正则 抠出来.
  2. //$reg正则   
  3. $reg = "/<img[^>]*src="(http://(.+)/(.+).(jpg|gif|bmp|bnp))"/isU";   
  4. //$content文章内容   
  5. //把抠出来的 img 地址存放到 $img_array 变量中   
  6. preg_match_all($reg$content$img_array, PREG_PATTERN_ORDER);   
  7. //过滤重复的图片   
  8. $img_array = array_unique($img_array[1]);   
  9.   
  10. //第二步. 把$img_array 数组循环一下. 做图片保存和文章位置替换   
  11.   
  12. foreach ($img_array as $img){   
  13.     echo .$img."<br>";//打印出全部图片地址   
  14.   
  15.         //判断是否是自己网站上的 图片   
  16.         if('xxx.com' != get_domain($img)){// 如果这个图片不是自己服务器上的   
  17.             //读取图片文件   
  18.             $Gimg = new GetImage();   
  19.             $Gimg->source = $img;   
  20.             $Gimg->save_to = './data/temp/';   
  21.             $FILE =  $Gimg->download(); //图片移动到本地   
  22.             //保存到相册 得到图片保存的位置   
  23.             $img_path = pic_save($FILE,0,'');   
  24.             //文本路径替换   
  25.             $message = str_replace($img$img_path$message);     
  26.         }   
  27.   
  28. }   
  29.   
  30.   
  31.   
  32.   
  33. //从url中获得域名,get_domain($url)得到如“XXX.com”的域名   
  34. function get_domain($url){   
  35.     $pattern = "/[w-]+.(com|net|org|gov|cc|biz|info|cn)(.(cn|hk))*/";   
  36.     preg_match($pattern$url$matches);   
  37.     if(count($matches) > 0) {   
  38.         return $matches[0];   
  39.     }else{   
  40.         $rs = parse_url($url);   
  41.         $main_url = $rs["host"];   
  42.         if(!strcmp(long2ip(sprintf("%u",ip2long($main_url))),$main_url)) {   
  43.             return $main_url;   
  44.         }else{   
  45.             $arr = explode(".",$main_url);   
  46.             $count=

    上一个:php自动采集保存远程图片与文件的函数
    下一个:php使用cur自动采集下载远程服务器图片方法

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,