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 相关文章推荐
默默简单的写了一个模板引擎
Jan 02 PHP
PHP实现MVC开发得最简单的方法――模型
Apr 10 PHP
PHP调用Webservice实例代码
Jul 29 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
Jun 19 PHP
用PHP解决的一个栈的面试题
Jul 02 PHP
php单态设计模式(单例模式)实例
Nov 18 PHP
PHP实现的sqlite数据库连接类
Dec 12 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
Jun 04 PHP
php将从数据库中获得的数据转换成json格式并输出的方法
Aug 21 PHP
php实现的表单验证类完整示例
Aug 13 PHP
Laravel使用Queue队列的技巧汇总
Sep 02 PHP
你真的了解PHP中的引用符号(&)吗
May 12 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模板之Phpbean的目录结构
2008/01/10 PHP
php数组函数序列 之array_count_values() 统计数组中所有值出现的次数函数
2011/10/29 PHP
js仿百度贴吧验证码特效实例代码
2014/01/16 Javascript
nodejs npm package.json中文文档
2014/09/04 NodeJs
JavaScript的Vue.js库入门学习教程
2016/05/23 Javascript
纯JS实现可拖拽表单的简单实例
2016/09/02 Javascript
微信小程序  Mustache语法详细介绍
2016/10/27 Javascript
BootStrap按钮标签及基本样式
2016/11/23 Javascript
Vue + Webpack + Vue-loader学习教程之功能介绍篇
2017/03/14 Javascript
详解Vue.js分发之作用域槽
2017/06/13 Javascript
javascript字体颜色控件的开发 JS实现字体控制
2017/11/27 Javascript
详解js类型判断
2018/05/22 Javascript
jquery获取并修改触发事件的DOM元素示例【基于target 属性】
2019/10/10 jQuery
Vue 路由间跳转和新开窗口的方式(query、params)
2019/12/25 Javascript
微信小程序动态添加和删除组件的现实
2020/02/28 Javascript
Python psutil模块简单使用实例
2015/04/28 Python
Pythont特殊语法filter,map,reduce,apply使用方法
2016/02/27 Python
python基本语法练习实例
2017/09/19 Python
python实现zabbix发送短信脚本
2018/09/17 Python
python自动发微信监控报警
2019/09/06 Python
Python爬虫 urllib2的使用方法详解
2019/09/23 Python
tensorflow 模型权重导出实例
2020/01/24 Python
解决django migrate报错ORA-02000: missing ALWAYS keyword
2020/07/02 Python
html5中localStorage本地存储的简单使用
2017/06/16 HTML / CSS
澳洲的服装老品牌:SABA
2018/02/06 全球购物
贪睡宠物用品:Snoozer Pet Products
2020/02/04 全球购物
求职自荐信
2013/12/14 职场文书
探矿工程师自荐信
2014/01/24 职场文书
《草虫的村落》教学反思
2014/02/16 职场文书
迟到检讨书2000字(精选篇)
2014/10/07 职场文书
格列佛游记读书笔记
2015/06/30 职场文书
初中毕业感言300字
2015/07/31 职场文书
重阳节主题班会
2015/08/17 职场文书
python元组打包和解包过程详解
2021/08/02 Python
Python内置数据结构列表与元组示例详解
2021/08/04 Python
关于maven依赖 ${xxx.version}报错问题
2022/01/18 Java/Android