0

0

php 文章中的远程图片采集到本地_PHP教程

php中文网

php中文网

发布时间:2016-07-20 11:06:16

|

1347人浏览过

|

来源于php中文网

原创

$message   //文章内容

    //正则(这个还不是)

    
$reg "/php 文章中的远程图片采集到本地_PHP教程]*src="(http://(.+)/(.+).(jpg|gif|bmp|bnp))"/isU";

    
//把抠出来的 img 地址存放到 $img_array php?name=%B1%E4%C1%BF">变量

    
preg_match_all($reg$message$img_arrayPREG_PATTERN_ORDER);

    
//过滤重复的图片

    
$img_array array_unique($img_array[1]);复制代码

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

Motiff
Motiff

Motiff是由猿辅导旗下的一款界面设计工具,定位为“AI时代设计工具”

下载
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 里面已经图片已经替换为自己服务器本地的地址,并且图片也保存到自己的服务器上.复制代码//下面一个函数 和 类是从网络上找的.



//从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



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

class GetImage {



var 
$source;

var 
$save_to;

var 
$quality;



function 
download($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->source0, -$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;

    }

    

    function 
LoadImageCURL($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);



    }

}

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/445035.htmlTechArticle$message //文章内容 //正则(这个还不是) $reg = /img[^]*src=(http://(.+)/(.+).(jpg|gif|bmp|bnp))/isU ; //把抠出来的img地址存放到$img_array 变量 中 preg_match_a...

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

150

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

88

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

90

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

61

2025.12.31

出现404解决方法大全
出现404解决方法大全

本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

493

2025.12.31

html5怎么播放视频
html5怎么播放视频

想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

16

2025.12.31

关闭win10系统自动更新教程大全
关闭win10系统自动更新教程大全

本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

12

2025.12.31

阻止电脑自动安装软件教程
阻止电脑自动安装软件教程

本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

5

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

2

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.2万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 6.9万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号