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的库,结果发现很多东西
Dec 31 PHP
php创建基本身份认证站点的方法详解
Jun 08 PHP
深入解析PHP垃圾回收机制对内存泄露的处理
Jun 14 PHP
DOM XPATH获取img src值的query
Sep 23 PHP
PHP imagegrabscreen和imagegrabwindow(截取网站缩略图)的实例代码
Nov 07 PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
Mar 18 PHP
PHP连接sql server 2005环境配置及问题解决
Aug 08 PHP
详解PHP实现异步调用的4种方法
Mar 14 PHP
smarty学习笔记之常见代码段用法总结
Mar 19 PHP
php读取XML的常见方法实例总结
Apr 25 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
Nov 14 PHP
thinkphp5+layui实现的分页样式示例
Oct 08 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
使用zend studio for eclipse不能激活代码提示功能的解决办法
2009/10/11 PHP
PHP远程调试之XDEBUG
2015/12/29 PHP
禁止直接访问php文件代码分享
2020/05/05 PHP
Javascript 按位取反运算符 (~)
2014/02/04 Javascript
jQuery中replaceAll()方法用法实例
2015/01/16 Javascript
jQuery实现手机版页面翻页效果的简单实例
2016/10/05 Javascript
js实现动态显示时间效果
2017/03/06 Javascript
jQuery设计思想
2017/03/07 Javascript
在vue项目中使用Nprogress.js进度条的方法
2018/01/31 Javascript
使用百度地图实现地图网格的示例
2018/02/06 Javascript
webpack结合express实现自动刷新的方法
2019/05/07 Javascript
js实现无限瀑布流实例方法
2019/09/16 Javascript
Vue.js计算机属性computed和methods方法详解
2019/10/12 Javascript
vue-resource post数据时碰到Django csrf问题的解决
2020/03/13 Javascript
python模拟新浪微博登陆功能(新浪微博爬虫)
2013/12/24 Python
安装Python的web.py框架并从hello world开始编程
2015/04/25 Python
Python中Django框架利用url来控制登录的方法
2015/07/25 Python
Python通过DOM和SAX方式解析XML的应用实例分享
2015/11/16 Python
Django实现自定义404,500页面教程
2017/03/26 Python
Python之Scrapy爬虫框架安装及简单使用详解
2017/12/22 Python
python爬取足球直播吧五大联赛积分榜
2018/06/13 Python
局域网内python socket实现windows与linux间的消息传送
2019/04/19 Python
python利用后缀表达式实现计算器功能
2021/02/22 Python
canvas进阶之贝塞尔公式推导与物体跟随复杂曲线的轨迹运动
2018/01/10 HTML / CSS
Beauty Expert美国/加拿大:购买奢侈美容产品
2018/12/05 全球购物
荷兰网上药店:Drogisterij.net
2019/09/03 全球购物
大学生毕业自我鉴定
2013/11/06 职场文书
最新结婚典礼主持词
2014/03/14 职场文书
银行求职信范文
2014/05/26 职场文书
幼儿园植树节活动总结
2014/07/04 职场文书
保险专业求职信
2014/07/07 职场文书
公务员培的训心得体会
2014/09/01 职场文书
搞笑的爱情检讨书
2014/10/01 职场文书
监理中标通知书
2015/04/16 职场文书
教师继续教育反思周记
2015/06/25 职场文书
2016元旦主持人开场白
2015/12/03 职场文书