php采集内容中带有图片地址的远程图片并保存的方法

本文实例讲述了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程序设计有所帮助。

(0)

相关推荐

  • PHP获取远程图片并保存到本地的方法

    本文实例讲述了PHP获取远程图片并保存到本地的方法.分享给大家供大家参考.具体实现方法如下: <?php function GrabImage($url, $filename = "") { if ($url == ""):return false; endif; //如果$url地址为空,直接退出 if ($filename == "") { //如果没有指定新的文件名 $ext = strrchr($url, "."

  • 使用ThinkPHP自带的Http类下载远程图片到本地的实现代码

    Http类在目录ThinkPHP/Lib/ORG/Net下面.接下来看看是如何调用的. 复制代码 代码如下: <?php import("Com.Buyback.QueryAmazon"); import("ORG.Net.Http"); class Image { public static function getImage($isbn) { $bookInformModel = D("bookinform"); $result = $

  • 一个PHP的远程图片抓取函数分享

    复制代码 代码如下: function grabImage($url, $filename = '') { if($url == '') { return false; //如果 $url 为空则返回 false; } $ext_name = strrchr($url, '.'); //获取图片的扩展名 if($ext_name != '.gif' && $ext_name != '.jpg' && $ext_name != '.bmp' && $ext_n

  • php中通过正则表达式下载内容中的远程图片的函数代码

    这段程序其实是属于"小偷程序"的重要部分. 这一段程序只是下载远程图片的那一段而已,程序写的比较简单,大多部分都做了注释. 复制代码 代码如下: if (preg_match_all("/http://[^ "']+[.jpg|.gif|.jpeg|.png]+/ui",stripcslashes($content),$aliurl)){ $i=0; //多个文件++ while(list($key ,$v) = each($aliurl[0])){ //

  • php将远程图片保存到本地服务器的实现代码

    php如何将远程图片本地化,本文分享了实现代码 <?php //站点根目录 $cfg_basedir = dirname(__FILE__); //停建目录属性 $cfg_dir_purview ='0755'; /*Get请求远程内容函数*/ $cookie_file = dirname(__FILE__).'/cookie.txt'; //COOKIE存放地址 function pget($url,$ref=false,$head=false){ $curl = curl_init(); /

  • PHP实现的下载远程图片自定义函数分享

    复制代码 代码如下: <?php /**  * PHP下载远程图片到本地  *  * @param $url string 远程文件地址  * @param $filename string 保存后的文件名(为空时则为随机生成的文件名,否则为原文件名)  * @param $fileType array 允许的文件类型  * @param $dirName string 文件保存的路径(路径其余部分根据时间系统自动生成)  * @param $type int 远程获取文件的方式  * @ret

  • php中使用gd库实现远程图片下载实例

    因为今天想写个远程下载图片的类,提前热身写了个php gd库实现远程图片下载功能,当然curl实现更好,php gd库实现远程图片下载功能主要使用gd库的两个函数ImageCreateFromXXX()用于生成图片函数和ImageXXX函数,XXX表示不同图片的扩展名,所以你要想办法获取远程图片的扩展名了,附上php代码如下: <?php header("Content-type:text/html ; charset=utf-8"); if (!empty($_POST['su

  • php正则匹配文章中的远程图片地址并下载图片至本地

    使用php的正则表达式来实现: $content = '这里是文章内容,这里插入一张图片测试 <img src="XXXXXXXXXXXXXXXXXXXX">'; $content = stripslashes ( $content ); $img_array = array (); // 匹配所有远程图片 preg_match_all ( "/(src|SRC)=["|'| ]{0,}(http://(.*).(gif|jpg|jpeg|bmp|png

  • 解析php下载远程图片函数 可伪造来路

    gurl 要下载的图片地址$rfurl 来路.如果目标图像做了防盗链设置,可以绕过.$filename 下载图片保存的文件名,相对路径,不要用realpath$gcookie 调整cookie 伪造的cookie$JumpCount 跳转计数$maxtime 最大次数调用方法:DownImageKeep("http://www.baidu.com/img/baidu_jgylogo2.gif","http://baidu.com","a.gif"

  • php采集内容中带有图片地址的远程图片并保存的方法

    本文实例讲述了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_retu

  • C#根据http和ftp图片地址获取对应图片

    本文实例为大家分享了C#根据http和ftp地址获取对应图片的具体代码,供大家参考,具体内容如下 public class GetBitmapImageClass { public BitmapSource GetImageHttp(string url,int width) { var image = new BitmapImage(); int BytesToRead = 100; if (!string.IsNullOrEmpty(url)) { WebRequest request =

  • PHP中用header图片地址 简单隐藏图片源地址

    复制代码 代码如下: <?php        $path=$_GET["path"];        $cacheimgname=str_replace("/","_",$path);        $localimg="upimg/".$cacheimgname;        if ((file_exists($localimg)))        {        $httpurl=$localimg;     

  • webpack+vue中使用别名路径引用静态图片地址

    webpack 的别名好处大家也都了解, 但是 vue 的模板中, 对图片地址使用别名时总出现问题, 很久时间的时间都没找到解决办法, 一度认为是 webpack 的原因... alias: { 'src': path.resolve(__dirname, '../src'), 'assets': path.resolve(__dirname, '../src/assets'), 'components': path.resolve(__dirname, '../src/components')

  • PHP抓取远程图片(含不带后缀的)教程详解

    一.创建项目 作为演示,我们在www根目录创建项目grabimg,创建一个类GrabImage.php和一个index.php. 二.编写类代码 我们定义一个和文件名相同的类:GrabImage class GrabImage{ } 三.属性 接下来定义几个需要使用的属性. 1.首先定义一个需要抓取的图片地址:$img_url 2.再定义一个$file_name用来存储文件的名称,但是不携带拓展名,因为可能涉及到拓展名更换,所以这里拆开定义 3.紧接着就是拓展名$extension 4.然后我们

  • 百度UEditor编辑器如何关闭抓取远程图片功能

    这个坑娘的功能,开始时居然不知道如何触发,以为有个按钮,点击一下触发,翻阅了文档,没有发现,然后再网络上看到原来是复制粘贴非白名单内的图片到编辑框时触发,坑娘啊............... 问题又来了:今天在写百度UEditor编辑器的[取远程图片功能]时有碰到:该功能如何关闭了? 又花了15分钟左右的时间查阅了[官方文档]以及[官方论坛],都没有找到解决办法,那就查阅下源文件看看,是否有相关的判断呢(本人JS非常烂) 于是马上查阅:ueditor.all.js文件,发现如下代码 复制代码 代

  • JavaScript正则表达式替换字符串中图片地址(img src)的方法

    本文实例讲述了JavaScript正则表达式替换字符串中图片地址(img src)的方法.分享给大家供大家参考,具体如下: 今天开发中遇到一个问题:如何替换一段HTML字符串中包含的所有img标签的src值? 开始想到的解决方法是: content.replace(/<img [^>]*src=['"]([^'"]+)[^>]*>/gi, function (match) { console.log(match); }); 输出结果是: 复制代码 代码如下: &

  • 用asp自动解析网页中的图片地址

    一,取得原页中的图片的地址. <%function PicStr(str) Set objRegExp = New Regexp '设置配置对象 objRegExp.IgnoreCase = True '忽略大小写 objRegExp.Global = True '设置为全文搜索 objRegExp.Pattern = "<IMG.+?>" '为了确保能准确地取出图片地址所以分为两层配置:首先找到里面的<IMG>标签,然后再取出里面的图片地址后面的geti

随机推荐