检查文本内容中的远程图片,下载远程图片到本地的方法示例。

/**
* 下载远程图片到本地
*
* @param string $txt 用户输入的文字,可能包含有图片的url
* @param string $keywords 网站域名关键字,路径中含有这个关键字的图片(即本网站图片)跳过
* @return string
*/
public function getImageToLocal($txt,$keywords = 'xxx.com')
{ $matches = array();
preg_match_all('/<img.+?src=(.+?)\s/is',$txt,$matches);
if(!is_array($matches)) return $txt;
$curl = new curl();
$curl -> setHeader(true);
foreach ($matches[1] as $k => $v)
{
$url = trim($v,"\"'");
$ext = '';
if(strpos($url,$keywords) === false && substr($url,0,7) == 'http://') //非本站地址,需要下载图片
{
$curl -> setUrl($url);
$curl -> setTimeout(5);
$data = $curl -> send();
list($header,$imageData) = explode("\n\n",$data);
if($ext = $this -> getImageExtension($header))
{
$file = IMAGE_SAVE_DIR . date('YmdHis') . rand(1,100) . $k . '.' . $ext;
@file_put_contents($file,$imageData);
if(is_file($file)) $txt = str_replace($v,'"' . str_replace(ROOT,'',$file) . '"',$txt);
}
}
}
return $txt;
} /**
* 从HTTP头分离出图片的扩展名
*
* @param string $header HTTP头
* @return string
*/
function getImageExtension($header)
{
$arr = explode("\n",$header);
foreach($arr as $k => $v)
{
$line = explode(':',$v);
if($line[0] == 'Content-Type') return str_replace('image/','',trim($line[1]));
}
return '';
}

php开发中将远程图片本地化的方法的更多相关文章

  1. 火车头dede采集接口,图片加水印,远程图片本地化,远程无后缀的无图片本地化

    <?php /* [LocoySpider] (C)2005-2010 Lewell Inc. 火车采集器 DedeCMS 5.7 UTF8 文章发布接口 Update content: 图片加 ...

  2. 【代码审计】EasySNS_V1.6远程图片本地化导致Getshell

    0x00 环境准备 EasySNS官网:http://www.imzaker.com 网站源码版本:EasySNS极简社区V1.60 程序源码下载:http://es.imzaker.com/inde ...

  3. php 远程图片本地化

    /** * 把新浪的远程图片下载到自己服务器上 * * @access public * @param goods_desc $goods_desc 要处理的内容 * @return mix 如果成功 ...

  4. ecshop 远程图片本地化

    define('IN_ECS', true); require(dirname(__FILE__) . '/includes/init.php'); $smarty->assign('siteD ...

  5. php 下载远程图片 的几种方法(转)

    1.获取远程文件大小及信息的函数 function getFileSize($url){          $url = parse_url($url);          if($fp = @fso ...

  6. 织梦dedecms 无法下载远程图片 fsockopen函数被禁用的解决方法

    在linux服务器上fsockopen()函数被无情的禁用了(这其实是出于安全考虑,可以理解),下载远程图片的功能就没有办法使用了.找了一些资料之后,找到了解决方法,就是用stream_socket_ ...

  7. php下载远程图片方法总结(curl手动解析header)curl跳转问题解决

    常用方法一般有:. file_get_contents file_put_contents readfile($file) //效率很高. 一般代码: /** * 抓取远程图片 * * @param ...

  8. ecshop_商品描述远程图片自动本地化插件

    解压缩文件,覆盖 ecshop 的 \includes\fckeditor文件夹. 这样在后台添加商品的商品详细描述,编辑器最后一个按钮就是自动下载 远程图片到你的网站空间,这样可防止对方网站图片失效 ...

  9. PHP抓取远程图片教程(包含不带后缀图片)

    之前做微信登录开发时候,发现微信头像图片没有后缀名,传统的图片抓取方式不奏效,需要特殊的抓取处理.所以,后来将各种情况结合起来,封装成一个类,分享出来. 创建项目 作为演示,我们在www根目录创建项目 ...

随机推荐

  1. sql注释

    一般使用数据库客户端软件是navicat,上面写sql用的注释符号一般是“#”或者“/* */”,比如: #我是注释 /*我是注释*/ 记得之前看别人sql里用“--”作为注释符号,结果我今天也试了一 ...

  2. css行级块级区别总结摘录

    一.块级元素:block element 每个块级元素默认占一行高度,一行内添加一个块级元素后无法一般无法添加其他元素(float浮动后除外).两个块级元素连续编辑时,会在页面自动换行显示.块级元素一 ...

  3. Js监控回车事件

    标题通俗的说,也就是绑定当用户按下回车键要执行的事件. 下面,入正题. 第一步,先编写简单的页面代码,这里我们只需要一个按钮就足够了.当然,还有按钮事件. <html> <head& ...

  4. 如何把PPT变小|PowerPoint文档减肥的几种方法

    使用powerpoint制作幻灯片的过程中,经常出现过这样的情况,制作幻灯片时,出于内容的需要和美观的需要,添加了许多图片和Excel表或者OLE对象,成倍增大了文档的体积,结果导致: 1.页面编辑人 ...

  5. 07:打印ASCII码

    总时间限制:  1000ms 内存限制:  65536kB 描述 输入一个除空格以外的可见字符(保证在函数scanf中可使用格式说明符%c读入),输出其ASCII码. 输入 一个除空格以外的可见字符. ...

  6. 关于 从别人电脑上 高版本的 Xcode上拷贝过来的项目的 不能运行模拟器的 解决方法

    如图 从别人电脑上 拷贝过来的  工程  打开后  点击 iOS  Device  只有  一个选项  没有模拟器.这说明 自己的 Xcode 的版本比 创建这个工程所用的版本低.所以 要睇啊你tar ...

  7. JS和正则表达式验证手机号码、邮箱等

    <-------------------------------------验证手机号码---------------------------------------------> fun ...

  8. How to use PhotoshopApplication in maxscript

    未完待续 ps_app= createOLEObject "Photoshop.Application" ps_app.Load "d:\\test\\aaa.tga&q ...

  9. SPSS相关和回归分析

    1.语文和数学成绩都受IQ的影响而且相互影响,则分析语文和数学的关系时需要偏相关分析.2.距离分析用于探索相似性,比如给了某年的12个月三个城市的气温数据,然后分析,会得到一个相似性矩阵,这是个对称阵 ...

  10. throw new DataException("检查服务器是否存在失败:" + ex);

    try            { }            catch (Exception ex)            {                LogHelper.Error(" ...