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 相关文章推荐
discuz的php防止sql注入函数
Jan 17 PHP
洪恩在线成语词典小偷程序php版
Apr 20 PHP
destoon公司主页模板风格的添加方法
Jun 20 PHP
php判断GIF图片是否为动画的方法
Sep 04 PHP
WordPress中重置文章循环的rewind_posts()函数讲解
Jan 11 PHP
ThinkPHP3.2.2实现持久登录(记住我)功能的方法
May 16 PHP
PHP类型约束用法示例
Sep 28 PHP
注释PHP和html混合代码的小技巧(分享)
Nov 03 PHP
PHP长连接实现与使用方法详解
Feb 11 PHP
PHP设计模式之建造者模式定义与用法简单示例
Aug 13 PHP
PHP的Trait机制原理与用法分析
Oct 18 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的安全
2006/10/09 PHP
php目录管理函数小结
2008/09/10 PHP
PHP备份数据库生成SQL文件并下载的函数代码
2012/02/05 PHP
Laravel中使用FormRequest进行表单验证方法及问题汇总
2016/06/19 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
2016/11/15 PHP
PHP自动识别当前使用移动终端
2018/05/21 PHP
原生js ActiveXObject获取execl里面的值
2013/11/01 Javascript
浅析JavaScript访问对象属性和方法及区别
2015/11/16 Javascript
js实现图片轮播效果
2015/12/19 Javascript
jQuery实现带延时功能的水平多级菜单效果【附demo源码下载】
2016/09/21 Javascript
微信小程序 picker 组件详解及简单实例
2017/01/10 Javascript
vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀
2018/06/13 Javascript
实例详解Vue项目使用eslint + prettier规范代码风格
2018/08/20 Javascript
JS 音频可视化插件Wavesurfer.js的使用教程
2018/10/31 Javascript
Vue 指令实现按钮级别权限管理功能
2019/04/23 Javascript
layui 数据表格+分页+搜索+checkbox+缓存选中项数据的方法
2019/09/21 Javascript
[01:15:29]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第三局
2016/03/04 DOTA
Python实现过滤单个Android程序日志脚本分享
2015/01/16 Python
17个Python小技巧分享
2015/01/23 Python
python使用Queue在多个子进程间交换数据的方法
2015/04/18 Python
Python的消息队列包SnakeMQ使用初探
2016/06/29 Python
简介Python的collections模块中defaultdict类型的用法
2016/07/07 Python
Python实现屏幕截图的代码及函数详解
2016/10/01 Python
详解python中的hashlib模块的使用
2019/04/22 Python
Python控制Firefox方法总结
2019/06/03 Python
在cmd中查看python的安装路径方法
2019/07/03 Python
提升python处理速度原理及方法实例
2019/12/25 Python
pytorch获取模型某一层参数名及参数值方式
2019/12/30 Python
如何在Windows中安装多个python解释器
2020/06/16 Python
Html5实现单张、多张图片上传功能
2019/04/28 HTML / CSS
比驿:全球酒店比价网
2018/06/20 全球购物
英国最受欢迎的在线隐形眼镜商店:VisionDirect.co.uk
2018/12/06 全球购物
制冷与电控专业应届生求职信
2013/11/11 职场文书
代办出身证明书
2014/10/21 职场文书
2014年部门工作总结
2014/11/12 职场文书
学校教师培训工作总结
2015/10/14 职场文书