php采集内容中带有图片地址的远程图片并保存的方法


Posted in PHP onJanuary 03, 2015

本文实例讲述了php采集内容中带有图片地址的远程图片并保存的方法。分享给大家供大家参考。具体实现方法如下:

function my_file_get_contents($url, $timeout=30) { 

 if ( function_exists('curl_init') )  

 { 

  $ch = curl_init(); 

  curl_setopt ($ch, curlopt_url, $url); 

  curl_setopt ($ch, curlopt_returntransfer, 1); 

  curl_setopt ($ch, curlopt_connecttimeout, $timeout); 

  $file_contents = curl_exec($ch); 

  curl_close($ch); 

 }  

 else if ( ini_get('allow_url_fopen') == 1 || strtolower(ini_get('allow_url_fopen')) == 'on' )    

 { 

  $file_contents = @file_get_contents($url); 

 }  

 else  

 { 

  $file_contents = ''; 

 } 

 return $file_contents; 

}

 
function get_remote($body,$title){ 

 

 $img_array = array();  

 $img_path = realpath("../../../upfile/news/").'/'.date("y/m/d/"); //采集远程图片保存地址 

 //die($img_path); 

 $img_rpath='/upfile/news/'.date("y/m/d/");  //设置访问地址 

 $body = stripslashes(strtolower($body));  

 preg_match_all("/(src|src)=["|'| ]{0,}(http://(.*).(gif|jpg|jpeg|png))/isu",$body,$img_array);  

 $img_array = array_unique($img_array[2]);  

 foreach ($img_array as $key => $value) {  

  $get_file = my_file_get_contents($value,60); 

  $filetime = time();    

  $filename = date("ymdhis",$filetime).rand(1,999).'.'.substr($value,-3,3);  

  if(emptyempty($get_file)){ 

   @sleep(10); 

   $get_file = my_file_get_contents($value,30); 

   if(emptyempty($get_file)){ 

    $body = preg_replace("/".addcslashes($value,"/")."/isu", '/notfound.jpg', $body); 

    continue; 

    } 

  } 

  if(!emptyempty($get_file) ){ 

   if( mkdirs($img_path) ) 

   { 

    $fp = fopen($img_path.$filename,"w"); 

    if(fwrite($fp,$get_file)){          

     $body = preg_replace("/".addcslashes($value,"/")."/isu", $img_rpath.$filename, $body);  

    } 

    fclose($fp); 

    @sleep(6); 

   }    

  }     

  

 } 

 $body =str_replace("<img","<img ",$body);  

 return $body;

  

} 

 

function mkdirs($dir) 

{ 

 if(!is_dir($dir)){ 

  if(!mkdirs(dirname($dir))){ 

   return false;} 

  if(!mkdir($dir,0777)){ 

   return false;} 

 } 

 return true; 

} 

//用法如下:

 

$str ='fasfsdafsa<img src=http://filesimg.xxxx.com/2010/03/2010062300391582.jpg />'; 

echo get_remote($str,'图片');

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
yii框架中的Url生产问题小结
Jan 16 PHP
深入密码加salt原理的分析
Jun 06 PHP
php中如何同时使用session和cookie来保存用户登录信息
Jul 05 PHP
请离开include_once和require_once
Jul 18 PHP
PHP使用SOAP调用.net的WebService数据
Nov 12 PHP
php实现数组筛选奇数和偶数示例
Apr 11 PHP
浅析ThinkPHP的模板输出功能
Jul 01 PHP
PHP制作万年历
Jan 07 PHP
ajax+php控制所有后台函数调用
Jul 15 PHP
Yii框架弹出窗口组件CJuiDialog用法分析
Jan 07 PHP
thinkphp3.2实现在线留言提交验证码功能
Jul 19 PHP
php文件后缀不强制为.php的实操方法
Sep 18 PHP
php中socket通信机制实例详解
Jan 03 #PHP
php读取csv数据保存到数组的方法
Jan 03 #PHP
php获取用户浏览器版本的方法
Jan 03 #PHP
php堆排序实现原理与应用方法
Jan 03 #PHP
php购物车实现方法
Jan 03 #PHP
PHP实现格式化文件数据大小显示的方法
Jan 03 #PHP
php自定义加密与解密程序实例
Dec 31 #PHP
You might like
PHP实现邮件群发的源码
2013/06/18 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
2016/12/12 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
2017/03/15 PHP
phpcms配置列表页以及获得文章发布时间
2017/07/04 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
用JS提交参数创建form表单在FireFox中遇到的问题
2013/01/16 Javascript
js读写(删除)Cookie实例详解
2013/04/17 Javascript
基于jquery实现导航菜单高亮显示(两种方法)
2015/08/23 Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
2016/07/27 Javascript
纯javaScript、jQuery实现个性化图片轮播【推荐】
2017/01/08 Javascript
AngularJS日程表案例详解
2017/08/15 Javascript
js将当前时间格式化为 年-月-日 时:分:秒的实现代码
2018/01/20 Javascript
VUE 使用中踩过的坑
2018/02/08 Javascript
ES6之Proxy的get方法详解
2019/10/11 Javascript
Vue的状态管理vuex使用方法详解
2020/02/05 Javascript
jQuery HTML设置内容和属性操作实例分析
2020/05/20 jQuery
Echarts.js无法引入问题解决方案
2020/10/30 Javascript
Handtrack.js库实现实时监测手部运动(推荐)
2021/02/08 Javascript
python登录pop3邮件服务器接收邮件的方法
2015/04/30 Python
Python赋值语句后逗号的作用分析
2015/06/08 Python
python修改字典内key对应值的方法
2015/07/11 Python
快速了解Python中的装饰器
2018/01/11 Python
django静态文件加载的方法
2018/05/20 Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
2019/07/14 Python
Python (Win)readline和tab补全的安装方法
2019/08/27 Python
python使用if语句实现一个猜拳游戏详解
2019/08/27 Python
pytorch 实现将自己的图片数据处理成可以训练的图片类型
2020/01/08 Python
PyTorch实现ResNet50、ResNet101和ResNet152示例
2020/01/14 Python
python turtle工具绘制四叶草的实例分享
2020/02/14 Python
HTML+CSS3+JS 实现的下拉菜单
2020/11/25 HTML / CSS
如何保障Web服务器安全
2014/05/05 面试题
求职信模板怎么做
2014/01/26 职场文书
爱与责任演讲稿
2014/05/20 职场文书
保险专业求职信
2014/07/07 职场文书
民事诉讼代理授权委托书范本
2014/10/08 职场文书
想要创业,那么你做好准备了吗?
2019/07/01 职场文书