Php采集文章图片到本地,php 文章中的远程图片采集到本地

$message //文章内容

//正则(这个还不是)$reg="/

php-notebook-193053.html]*src="(http://(.+)/(.+).(jpg|gif|bmp|bnp))"/isU";//把抠出来的 img 地址存放到 $img_array 变量中preg_match_all($reg,$message,$img_array,PREG_PATTERN_ORDER);//过滤重复的图片$img_array=array_unique($img_array[1]);复制代码

第二步. 把$img_array 数组循环一下. 做图片保存和文章位置替换foreach ($img_arrayas$img){//判断是否是自己网站上的 图片if('xxx.com'!=get_domain($img)){// 如果这个图片不是自己服务器上的

//读取图片文件$Gimg= newGetImage();$Gimg->source=$img;$Gimg->save_to='./data/temp/';$FILE=$Gimg->download();//图片移动到本地

//保存到相册 得到图片保存的位置$img_path=pic_save($FILE,0,'');//文本路径替换$message=str_replace($img,$img_path,$message);

}

}

....这时候 $message 里面已经图片已经替换为自己服务器本地的地址,并且图片也保存到自己的服务器上.复制代码//下面一个函数 和 类是从网络上找的.

//从url中获得域名functionget_domain($url){$pattern="/[w-]+.(com|net|org|gov|cc|biz|info|cn)(.(cn|hk))*/";preg_match($pattern,$url,$matches);

if(count($matches) >0) {

return$matches[0];

}else{$rs=parse_url($url);$main_url=$rs["host"];

if(!strcmp(long2ip(sprintf("%u",ip2long($main_url))),$main_url)) {

return$main_url;

}else{$arr=explode(".",$main_url);$count=count($arr);$endArr= array("com","net","org","3322");//com.cn net.cn 等情况if (in_array($arr[$count-2],$endArr)){$domain=$arr[$count-3].".".$arr[$count-2].".".$arr[$count-1];

}else{$domain=$arr[$count-2].".".$arr[$count-1];

}

return$domain;

}// end if(!strcmp...)}// end if(count...)}// end function

// 从远程吧图片载到服务器本地 的 类classGetImage{

var$source;

var$save_to;

var$quality;

functiondownload($method='curl') {$info= @GetImageSize($this->source);$mime=$info['mime'];// What sort of image?$type=substr(strrchr($mime,'/'),1);

switch ($type){

case'jpeg':$image_create_func='ImageCreateFromJPEG';$image_save_func='ImageJPEG';$new_image_ext='jpg';// Best Quality: 100$quality= isSet($this->quality) ?$this->quality:100;

break;

case'png':$image_create_func='ImageCreateFromPNG';$image_save_func='ImagePNG';$new_image_ext='png';// Compression Level: from 0 (no compression) to 9$quality= isSet($this->quality) ?$this->quality:0;

break;

case'bmp':$image_create_func='ImageCreateFromBMP';$image_save_func='ImageBMP';$new_image_ext='bmp';

break;

case'gif':$image_create_func='ImageCreateFromGIF';$image_save_func='ImageGIF';$new_image_ext='gif';

break;

case'vnd.wap.wbmp':$image_create_func='ImageCreateFromWBMP';$image_save_func='ImageWBMP';$new_image_ext='bmp';

break;

case'xbm':$image_create_func='ImageCreateFromXBM';$image_save_func='ImageXBM';$new_image_ext='xbm';

break;

default:$image_create_func='ImageCreateFromJPEG';$image_save_func='ImageJPEG';$new_image_ext='jpg';

}

if(isSet($this->set_extension)){$ext=strrchr($this->source,".");$strlen=strlen($ext);$new_name=basename(substr($this->source,0, -$strlen)).'.'.$new_image_ext;

}else{$new_name=basename($this->source);

}$save_to=$this->save_to."/blog_insert_temp_".time().mt_rand(1,99).".".$new_image_ext;//输出对象 组成跟$_FILE变量一样 得到后自己和平常图片上传处理一样了$img_info['name'] =basename($this->source);$img_info['type'] =$mime;$img_info['size'] =1000;$img_info['tmp_name'] =$save_to;$img_info['error'] =0;

if($method=='curl'){$save_image=$this->LoadImageCURL($save_to);

}elseif($method=='gd'){$img=$image_create_func($this->source);

if(isSet($quality)){$save_image=$image_save_func($img,$save_to,$quality);

}else{$save_image=$image_save_func($img,$save_to);

}

}

return$img_info;

}

functionLoadImageCURL($save_to){$ch=curl_init($this->source);$fp=fopen($save_to,"wb");// set URL and other appropriate options$options= array(CURLOPT_FILE=>$fp,CURLOPT_HEADER=>0,CURLOPT_FOLLOWLOCATION=>1,CURLOPT_TIMEOUT=>60);// 1 minute timeout (should be enough)curl_setopt_array($ch,$options);curl_exec($ch);curl_close($ch);fclose($fp);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值