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

今天写了一个这个功能, 拿出来跟cit的朋友一起分享

第一步. 先从文章中把所有 用正则 抠出来.

$message   //文章内容

//正则(这个还不是)

    $reg = "/]*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]);

[/php]

第二步. 把$img_array 数组循环一下. 做图片保存和文章位置替换

[php]

foreach ($img_array as $img){

//判断是否是自己网站上的 图片

if('xxx.com' != get_domain($img)){// 如果这个图片不是自己服务器上的

//读取图片文件

$Gimg = new GetImage();

$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 里面已经图片已经替换为自己服务器本地的地址,并且图片也保存到自己的服务器上.

[/php]

[php]

//下面一个函数 和 类是从网络上找的.

//从url中获得域名

function get_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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值