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 session应用实例 登录验证
Mar 16 PHP
PHP 强制下载文件代码
Oct 24 PHP
phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)
Mar 27 PHP
php截取后台登陆密码的代码
May 05 PHP
php 备份数据库代码(生成word,excel,json,xml,sql)
Jun 23 PHP
PHP中常用的输出函数总结
Sep 22 PHP
php中使用gd库实现下载网页中所有图片
May 12 PHP
PHP封装CURL扩展类实例
Jul 28 PHP
php微信开发之百度天气预报
Nov 18 PHP
PHP中通过getopt解析GNU C风格命令行选项
Nov 18 PHP
TP3.2.3框架文件上传操作实例详解
Jan 23 PHP
PHP接入支付宝接口失效流程详解
Nov 10 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无限遍历文件夹示例分享
2014/03/04 PHP
php防止站外远程提交表单的方法
2014/10/20 PHP
10款实用的PHP开源工具
2015/10/23 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
PHP调用接口用post方法传送json数据的实例
2018/05/31 PHP
模拟用户操作Input元素,不会触发相应事件
2007/05/11 Javascript
javascript(jquery)利用函数修改全局变量的代码
2009/11/02 Javascript
javascript中的prototype属性实例分析说明
2010/08/09 Javascript
图文详解Heap Sort堆排序算法及JavaScript的代码实现
2016/05/04 Javascript
JavaScript的Vue.js库入门学习教程
2016/05/23 Javascript
javascript表单正则应用
2017/02/04 Javascript
JS设计模式之惰性模式(二)
2017/09/29 Javascript
tween.js缓动补间动画算法示例
2018/02/13 Javascript
在vue中多次调用同一个定义全局变量的实例
2018/09/25 Javascript
angularJs中ng-model-options设置数据同步的方法
2018/09/30 Javascript
js删除指定位置超链接中含有百度与360的标题
2021/01/06 Javascript
python实现搜索本地文件信息写入文件的方法
2016/02/22 Python
详解Python3.6安装psutil模块和功能简介
2018/05/30 Python
python opencv捕获摄像头并显示内容的实现
2019/07/11 Python
Python selenium自动化测试模型图解
2020/04/15 Python
python中wheel的用法整理
2020/06/15 Python
pycharm + django跨域无提示的解决方法
2020/12/06 Python
全球酒店预订网站:Hotels.com
2016/08/10 全球购物
Hotter Shoes英国官网:英伦风格,舒适的鞋子
2017/12/28 全球购物
汉语专业应届生求职信
2013/10/01 职场文书
大学生的网上创业计划书
2013/12/31 职场文书
二年级数学教学反思
2014/01/21 职场文书
校园之声广播稿
2014/01/31 职场文书
股权转让意向书
2014/04/01 职场文书
工地食品安全责任书
2015/05/09 职场文书
第一书记观后感
2015/06/08 职场文书
2015年秋季学校开学标语
2015/07/16 职场文书
2019年大学生学年自我鉴定!
2019/03/25 职场文书
Python scrapy爬取起点中文网小说榜单
2021/06/13 Python
总结Python使用过程中的bug
2021/06/18 Python
用Java实现简单计算器功能
2021/07/21 Java/Android