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 相关文章推荐
我的论坛源代码(五)
Oct 09 PHP
解决dede生成静态页和动态页转换的一些问题,及火车采集入库生成动态的办法
Mar 29 PHP
php关于array_multisort多维数组排序的使用说明
Jan 04 PHP
php class中public,private,protected的区别以及实例分析
Jun 18 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(二)
Jun 23 PHP
php实现仿写CodeIgniter的购物车类
Jul 29 PHP
Laravel中使用FormRequest进行表单验证方法及问题汇总
Jun 19 PHP
使用Zttp简化Guzzle 调用
Jul 02 PHP
php如何计算两坐标点之间的距离
Dec 29 PHP
PHP简单验证码功能机制实例详解
Mar 27 PHP
php-fpm超时时间设置request_terminate_timeout资源问题分析
Sep 27 PHP
Laravel自定义 封装便捷返回Json数据格式的引用方法
Sep 29 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
星际RPG字典
2020/03/04 星际争霸
PHP文件缓存类示例分享
2015/01/30 PHP
微信公众号开发之语音消息识别php代码
2016/08/08 PHP
PHP基于cookie实现统计在线人数功能示例
2019/01/16 PHP
js split 的用法和定义 js split分割字符串成数组的实例代码
2012/05/13 Javascript
JS实现下拉框的动态添加(附效果)
2013/04/03 Javascript
Jquery选择子控件&quot;大于号&quot;和&quot; &quot;区别介绍及使用示例
2013/06/25 Javascript
jQuery中detach()方法用法实例
2014/12/25 Javascript
jQuery插件实现控制网页元素动态居中显示
2015/03/24 Javascript
jQuery插件Tooltipster实现漂亮的工具提示
2015/04/12 Javascript
jQuery ui实现动感的圆角渐变网站导航菜单效果代码
2015/08/26 Javascript
angular.js分页代码的实例
2016/07/27 Javascript
js判断请求的url是否可访问,支持跨域判断的实现方法
2016/09/17 Javascript
vuex实现简易计数器
2016/10/27 Javascript
AngularJS定时器的使用与移除操作方法【interval与timeout】
2016/12/14 Javascript
vue init webpack myproject构建项目 ip不能访问的解决方法
2018/03/20 Javascript
Vue实现可移动水平时间轴
2020/06/29 Javascript
[01:10:58]KG vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
[43:43]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第三场 11.29
2020/12/02 DOTA
详解Python网络爬虫功能的基本写法
2016/01/28 Python
python按行读取文件,去掉每行的换行符\n的实例
2018/04/19 Python
浅谈Python编程中3个常用的数据结构和算法
2019/04/30 Python
python3实现二叉树的遍历与递归算法解析(小结)
2019/07/03 Python
pytorch查看通道数 维数 尺寸大小方式
2020/05/26 Python
Python切片列表字符串如何实现切换
2020/08/06 Python
StubHub巴西:购买和出售您的门票
2016/07/22 全球购物
大学生职业生涯规划书模板
2014/01/03 职场文书
护士的自我鉴定
2014/02/07 职场文书
标准大学生职业生涯规划书写作指南
2014/09/18 职场文书
公务员政审材料范文
2014/12/23 职场文书
手术室消毒隔离制度
2015/08/05 职场文书
导游词之秦皇岛燕塞湖
2020/01/03 职场文书
Python3 多线程(连接池)操作MySQL插入数据
2021/06/09 Python
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
2021/06/26 MySQL
手把手教你导入Go语言第三方库
2021/08/04 Golang
vue route新窗口跳转页面并且携带与接收参数
2022/04/10 Vue.js