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实现小型站点广告管理
Oct 09 PHP
php动态生成JavaScript代码
Mar 09 PHP
php加密解密函数authcode的用法详细解析
Oct 28 PHP
php读取远程gzip压缩网页的方法
Dec 29 PHP
Laravel实现用户注册和登录
Jan 23 PHP
用php守护另一个php进程的例子
Feb 13 PHP
PHP微信开发之文本自动回复
Jun 23 PHP
PHP中如何判断exec函数执行成功?
Aug 04 PHP
PHP命名空间定义与用法实例分析
Aug 14 PHP
PHP接入微信H5支付的方法示例
Oct 28 PHP
laravel框架实现敏感词汇过滤功能示例
Feb 15 PHP
PHP标准库 (SPL)――Countable用法示例
Jun 05 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
利用discuz自带通行证整合dedecms的方法以及文件下载
2007/03/06 PHP
解析php中两种缩放图片的函数,为图片添加水印
2013/06/14 PHP
PHP嵌套输出缓冲代码实例
2015/05/12 PHP
使用纯php代码实现页面伪静态的方法
2015/07/25 PHP
PHP Swoole异步MySQL客户端实现方法示例
2019/10/24 PHP
jQuery 瀑布流 绝对定位布局(二)(延迟AJAX加载图片)
2012/05/23 Javascript
不使用jquery实现js打字效果示例分享
2014/01/19 Javascript
Node.js的包详细介绍
2015/01/14 Javascript
jquery验证邮箱格式是否正确实例讲解
2015/11/16 Javascript
javascript使用Promise对象实现异步编程
2016/03/01 Javascript
使用Bootstrap框架制作查询页面的界面实例代码
2016/05/27 Javascript
微信小程序 switch组件详解及简单实例
2017/01/10 Javascript
vue中vee validate表单校验的几种基本使用
2018/06/25 Javascript
jQuery.extend 与 jQuery.fn.extend的用法及区别实例分析
2018/07/25 jQuery
JavaScript闭包与作用域链实例分析
2019/01/21 Javascript
Vue数据绑定简析小结
2019/05/07 Javascript
vue-router二级导航切换路由及高亮显示的实现方法
2019/07/10 Javascript
vue-cli —— 如何局部修改Element样式
2020/10/22 Javascript
在Python中操作文件之read()方法的使用教程
2015/05/24 Python
Python读取MRI并显示为灰度图像实例代码
2018/01/03 Python
VSCode下配置python调试运行环境的方法
2018/04/06 Python
Win10下python 2.7.13 安装配置方法图文教程
2018/09/18 Python
Python获取数据库数据并保存在excel表格中的方法
2019/06/12 Python
基于K.image_data_format() == 'channels_first' 的理解
2020/06/29 Python
python3列表删除大量重复元素remove()方法的问题详解
2021/01/04 Python
Clarins娇韵诗美国官网:法国天然护肤品牌
2016/09/26 全球购物
美国山地自行车、露营、户外装备和服装购物网站:Aventuron
2018/05/05 全球购物
VisionPros美国站:加拿大在线隐形眼镜和眼镜零售商
2020/02/11 全球购物
PPP协议组成及简述协议协商的基本过程
2015/05/28 面试题
EJB的几种类型
2012/08/15 面试题
优秀体育委员自荐书
2014/01/31 职场文书
反腐倡廉警示教育活动心得体会
2014/09/04 职场文书
中学生旷课检讨书模板
2014/10/08 职场文书
党的群众路线教育实践活动总结
2014/10/30 职场文书
销售督导岗位职责
2015/04/10 职场文书
HTML页面中使两个div并排显示的实现
2022/05/15 HTML / CSS