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 相关文章推荐
PHP XML备份Mysql数据库
May 27 PHP
分享8个最佳的代码片段在线测试网站
Jun 29 PHP
PHP四舍五入精确小数位及取整
Jan 14 PHP
php数组中包含中文的排序方法
Jun 03 PHP
PHP5.3与5.5废弃与过期函数整理汇总
Jul 10 PHP
php中convert_uuencode()与convert_uuencode函数用法实例
Nov 22 PHP
php使用Jpgraph绘制复杂X-Y坐标图的方法
Jun 10 PHP
PHP封装的Twitter访问类实例
Jul 18 PHP
Laravel 5.4因特殊字段太长导致migrations报错的解决
Oct 22 PHP
php5对象复制、clone、浅复制与深复制实例详解
Aug 14 PHP
laravel 创建命令行命令的图文教程
Oct 23 PHP
ThinkPHP 5 AJAX跨域请求头设置实现过程解析
Oct 28 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中的traits实现代码复用使用实例
2015/05/13 PHP
php文件上传后端处理小技巧
2016/05/22 PHP
js 判断浏览器类型 去全角、半角空格 自动关闭当前窗口
2009/04/10 Javascript
左右悬浮可分组的网站QQ在线客服代码(可谓经典)
2012/12/21 Javascript
Jquery绑定事件(bind和live的区别介绍)
2013/08/23 Javascript
javascript客户端遍历控件与获取父容器对象示例代码
2014/01/06 Javascript
javascript ajax的5种状态介绍
2014/08/18 Javascript
jQuery实现鼠标经过购物车出现下拉框代码(推荐)
2016/07/21 Javascript
jQuery实现的瀑布流加载效果示例
2016/09/13 Javascript
JS FormData上传文件的设置方法
2017/07/05 Javascript
[js高手之路]设计模式系列课程-发布者,订阅者重构购物车的实例
2017/08/29 Javascript
微信小程序中吸底按钮适配iPhone X方案
2017/11/29 Javascript
JS中的函数与对象的创建方式
2019/05/12 Javascript
vue-cli3添加模式配置多环境变量的方法
2019/06/05 Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
2019/11/26 Javascript
jQuery 淡入/淡出效果函数用法分析
2020/05/19 jQuery
Vue使用自定义指令实现拖拽行为实例分析
2020/06/06 Javascript
node脚手架搭建服务器实现token验证的方法
2021/01/20 Javascript
简单介绍Python中的decode()方法的使用
2015/05/18 Python
Python编程实现双链表,栈,队列及二叉树的方法示例
2017/11/01 Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
2018/12/19 Python
详解Python基础random模块随机数的生成
2019/03/23 Python
python--shutil移动文件到另一个路径的操作
2020/07/13 Python
简单介绍HTML5中audio标签的使用
2015/09/24 HTML / CSS
世界首屈一指的钓鱼用品商店:TackleDirect
2016/07/26 全球购物
激光脱毛、蓝光和护肤:Tria Beauty
2019/03/28 全球购物
传统软件工程与面向对象的软件工程有什么区别
2012/05/31 面试题
教学评估实施方案
2014/03/16 职场文书
员工安全承诺书
2014/05/22 职场文书
党员承诺书范文2015
2015/04/27 职场文书
迎新生欢迎词2015
2015/07/16 职场文书
农贸批发市场管理制度
2015/08/07 职场文书
推广普通话宣传标语口号
2015/12/26 职场文书
创业计划书之韩国烧烤店
2019/09/19 职场文书
python实现腾讯滑块验证码识别
2021/04/27 Python
Python编写可视化界面的全过程(Python+PyCharm+PyQt)
2021/05/17 Python