php开发中将远程图片本地化的方法
检查文本内容中的远程图片,下载远程图片到本地的方法示例。
/**
* 下载远程图片到本地
*
* @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开发中将远程图片本地化的方法的更多相关文章
- 火车头dede采集接口,图片加水印,远程图片本地化,远程无后缀的无图片本地化
<?php /* [LocoySpider] (C)2005-2010 Lewell Inc. 火车采集器 DedeCMS 5.7 UTF8 文章发布接口 Update content: 图片加 ...
- 【代码审计】EasySNS_V1.6远程图片本地化导致Getshell
0x00 环境准备 EasySNS官网:http://www.imzaker.com 网站源码版本:EasySNS极简社区V1.60 程序源码下载:http://es.imzaker.com/inde ...
- php 远程图片本地化
/** * 把新浪的远程图片下载到自己服务器上 * * @access public * @param goods_desc $goods_desc 要处理的内容 * @return mix 如果成功 ...
- ecshop 远程图片本地化
define('IN_ECS', true); require(dirname(__FILE__) . '/includes/init.php'); $smarty->assign('siteD ...
- php 下载远程图片 的几种方法(转)
1.获取远程文件大小及信息的函数 function getFileSize($url){ $url = parse_url($url); if($fp = @fso ...
- 织梦dedecms 无法下载远程图片 fsockopen函数被禁用的解决方法
在linux服务器上fsockopen()函数被无情的禁用了(这其实是出于安全考虑,可以理解),下载远程图片的功能就没有办法使用了.找了一些资料之后,找到了解决方法,就是用stream_socket_ ...
- php下载远程图片方法总结(curl手动解析header)curl跳转问题解决
常用方法一般有:. file_get_contents file_put_contents readfile($file) //效率很高. 一般代码: /** * 抓取远程图片 * * @param ...
- ecshop_商品描述远程图片自动本地化插件
解压缩文件,覆盖 ecshop 的 \includes\fckeditor文件夹. 这样在后台添加商品的商品详细描述,编辑器最后一个按钮就是自动下载 远程图片到你的网站空间,这样可防止对方网站图片失效 ...
- PHP抓取远程图片教程(包含不带后缀图片)
之前做微信登录开发时候,发现微信头像图片没有后缀名,传统的图片抓取方式不奏效,需要特殊的抓取处理.所以,后来将各种情况结合起来,封装成一个类,分享出来. 创建项目 作为演示,我们在www根目录创建项目 ...
随机推荐
- C#(WinForm)上传图片保存到数据库和从数据库读取图片显示到窗体
//浏览图片 private void btnUp_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialo ...
- Building,Packaging,Deploying,and Administering Applications and Types
在我们进入章节之前,我们讨论一下生成.打包和部署你的应用程序和应用程序类型必须的步骤.在这章里,我关注的是如何为你的应用程序的用途生成程序集.在第三章,"共享程序集合和强命名程序集" ...
- 对于IEnumerable的一点理解
IEnumerable和IEnumerable<T>接口在.NET中是非常重要的接口,它允许开发人员定义foreach语句功能的实现并支持非泛型方法的简单的迭代,IEnumerable和I ...
- LIKE匹配关键字
1.% 匹配任意数目字符(包括零个字符) SELECT * FROM edo_user WHERE true_name LIKE '王%' 应用:关键字查询 WHERE u.true_name lik ...
- span宽度高度设置
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- jquery-object.js
/** * jQuery.query - Query String Modification and Creation for jQuery * Written by Blair Mitchelmor ...
- Java System类
java 不支持 全局方法 和 变量, system 类 中所有成员都是静态的, 而要引用这些变量和方法,可直接system作为前缀,
- 【编程实践】连续正整数之和(华东师范大学OJ-3025)
题目描述:一个正整数有可能可以被表示为 n(n>=2) 个连续正整数之和,如: 15=1+2+3+4+5 15=4+5+6 15=7+8 请编写程序,根据输入的任何一个正整数,找出符合这种要求的 ...
- cf B. I.O.U.
http://codeforces.com/contest/376/problem/B #include <cstdio> #include <cstring> #includ ...
- BeanUtils API中使用ConvertUtils向BeanUtils注册一个日期转换器
ConvertUtils.register(new Converter(){ public Object convert(Class type, Object value){ if(value == ...