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 相关文章推荐
对javascript和select部件的结合运用
Oct 09 PHP
PHPMailer安装方法及简单实例
Nov 25 PHP
PHP 多维数组排序(usort,uasort)
Jun 30 PHP
那些年一起学习的PHP(一)
Mar 21 PHP
解析thinkphp中的导入文件标签
Jun 20 PHP
php curl模拟post请求小实例
Nov 13 PHP
ThinkPHP实现多数据库连接的解决方法
Jul 01 PHP
php中file_get_content 和curl以及fopen 效率分析
Sep 19 PHP
Yii净化器CHtmlPurifier用法示例(过滤不良代码)
Jul 15 PHP
深入了解PHP中的Array数组和foreach
Nov 06 PHP
Redis构建分布式锁
Mar 28 PHP
PHP实现新型冠状病毒疫情实时图的实例
Feb 04 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开源开发框架ZendFramework使用中常见问题说明及解决方案
2014/06/12 PHP
php array 转json及java 转换 json数据格式操作示例
2019/11/13 PHP
&amp;lt;script defer&amp;gt; defer 是什么意思
2009/05/10 Javascript
JS判定是否原生方法
2013/07/22 Javascript
Node.js(安装,启动,测试)
2014/06/09 Javascript
在JavaScript中判断整型的N种方法示例介绍
2014/06/18 Javascript
JS实现图片产生波纹一样flash效果的方法
2015/02/27 Javascript
javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2015/04/01 Javascript
简单实现限制uploadify上传个数
2015/11/16 Javascript
jquery日历插件e-calendar升级版
2016/11/10 Javascript
jQuery使用ajax_动力节点Java学院整理
2017/07/05 jQuery
深入理解React高阶组件
2017/09/28 Javascript
Node.js模块全局安装路径配置方法
2018/05/17 Javascript
详解搭建一个vue-cli的移动端H5开发模板
2020/01/17 Javascript
Python中用Ctrl+C终止多线程程序的问题解决
2013/03/30 Python
python获得linux下所有挂载点(mount points)的方法
2015/04/29 Python
在Python中处理字符串之ljust()方法的使用简介
2015/05/19 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
2017/08/18 Python
python基础之包的导入和__init__.py的介绍
2018/01/08 Python
TensorFlow变量管理详解
2018/03/10 Python
python指定写入文件时的编码格式方法
2018/06/07 Python
详细介绍pandas的DataFrame的append方法使用
2019/07/31 Python
Python 合并多个TXT文件并统计词频的实现
2019/08/23 Python
django admin 自定义替换change页面模板的方法
2019/08/23 Python
Python集成开发工具Pycharm的安装和使用详解
2020/03/18 Python
Pandas读取csv时如何设置列名
2020/06/02 Python
上课睡觉检讨书
2014/01/28 职场文书
函授毕业自我鉴定
2014/02/04 职场文书
元宵节晚会主持人串词
2014/03/25 职场文书
合作意向书格式及范文
2014/03/31 职场文书
2014年德育工作总结
2014/11/20 职场文书
解约证明模板
2015/06/19 职场文书
使用Python脚本对GiteePages进行一键部署的使用说明
2021/05/27 Python
python中如何对多变量连续赋值
2021/06/03 Python
Spring Cloud Gateway去掉url前缀
2021/07/15 Java/Android
tp5使用layui实现多个图片上传(带附件选择)的方法实例
2021/11/17 PHP