制作图文排版秀米是一个不错的平台,而百度的UEditor编辑器可以集成秀米的插件,两者结合使文章的排版变得更加的快捷方便。

UEditor集成秀米教程 http://hgs.xiumi.us/uedit/

但是在实际使用过程中会有一个问题,秀米提供的模板里的图片素材都是存储在秀米自己的服务器上的,而且做了防盗链,在你自己的文章系统里图片是不被显示的。

所以我们要在此基础上加上图片转存的功能,让秀米的图存放在我们自己的服务器上,这样图片就可以正常显示了。

本次修改是让图片可以直接转存到七牛,作为一个独立的图片服务器,可以减轻主服务器的压力。

首先找到 ueditor.config.js这个文件,打开远程抓取功能

然后打开ueditor文件夹下php目录把下载好的七牛sdk放入,再打开下面的 Uploader.class.php文件,引入七牛

require 'qiniu/autoload.php';

use Qiniu\Auth;

use Qiniu\Storage\BucketManager;

将saveRemote方法修改成这样

private function saveRemote()

{

$imgUrl = htmlspecialchars($this->fileField);

$imgUrl = str_replace("&", "&", $imgUrl);

//正则把?x-oss-process后面的都去掉

$imgUrl = preg_replace('/\?.*/i', "", $imgUrl);

//http开头验证

if (strpos($imgUrl, "http") !== 0) {

$this->stateInfo = $this->getStateInfo("ERROR_HTTP_LINK");

return;

}

preg_match('/(^https*:\/\/[^:\/]+)/', $imgUrl, $matches);

$host_with_protocol = count($matches) > 1 ? $matches[1] : '';

// 判断是否是合法 url

if (!filter_var($host_with_protocol, FILTER_VALIDATE_URL)) {

$this->stateInfo = $this->getStateInfo("INVALID_URL");

return;

}

preg_match('/^https*:\/\/(.+)/', $host_with_protocol, $matches);

$host_without_protocol = count($matches) > 1 ? $matches[1] : '';

// 此时提取出来的可能是 ip 也有可能是域名,先获取 ip

$ip = gethostbyname($host_without_protocol);

// 判断是否是私有 ip

if(!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE)) {

$this->stateInfo = $this->getStateInfo("INVALID_IP");

return;

}

//获取请求头并检测死链

$heads = get_headers($imgUrl, 1);

if (!(stristr($heads[0], "200") && stristr($heads[0], "OK"))) {

$this->stateInfo = $this->getStateInfo("ERROR_DEAD_LINK");

return;

}

//格式验证(扩展名验证和Content-Type验证)

$fileType = strtolower(strrchr($imgUrl, '.'));

if (!in_array($fileType, $this->config['allowFiles']) || !isset($heads['Content-Type']) || !stristr($heads['Content-Type'], "image")) {

$this->stateInfo = $this->getStateInfo("ERROR_HTTP_CONTENTTYPE");

return;

}

preg_match("/[\/]([^\/]*)[\.]?[^\.\/]*$/", $imgUrl, $m);

$accessKey = '你的accessKey';

$secretKey = '你的secretKey';

$auth = new Auth($accessKey, $secretKey);

$bucket = '你的空间名';

$buck = new BucketManager($auth);

$key = date('Ymd').str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT);

$buck->fetch($imgUrl,$bucket,$key);

$this->fullName = '你的七牛域名'.$key;

$this->stateInfo = $this->stateMap[0];

}

如果百度编辑器里的上传单图也需要上传到七牛,那么再修改upFile方法

private function upFile()

{

$accessKey = '你的accessKey';

$secretKey = '你的secretKey';

$auth = new Auth($accessKey, $secretKey);

$bucket = '你的空间名';

// 生成上传Token

$token = $auth->uploadToken($bucket);

// 构建 UploadManager 对象

$uploadManager = new UploadManager();

$file = $_FILES[$this->fileField];

$key = time().'-'.$file['name'];

$uploadManager->putFile($token, $key, $file["tmp_name"]);

$this->fullName = '你的七牛域名'.$key;

$this->stateInfo = $this->stateMap[0];

}

在抓图替换这个过程中,可能由于图片过多需要等待,所以在粘贴了秀米排版好的文章后,要打开一个正在处理的动画。

修改xiumi-ue-dialog-v5.html文件的最下面,加入显示你动画样式的代码

当图片都替换完成之后,需要再将动画关闭掉。修改 ueditor.all.js文件的第23235行左右代码

这样百度编辑器抓取秀米图片转存到七牛云的功能就完成了。

另外wangEditor也是一个很好用的富文本编辑器,他的抓取秀米的图片转存七牛也类似。不过用这个有一个好处是可以监听图片的上传进度。

wangEditor编辑器文档地址 https://www.kancloud.cn/wangfupeng/wangeditor3/335769

贴一下我的Demo代码

wangEditor demo list

欢迎使用 wangEditor 富文本编辑器

后端代码

fetch($_POST["url"],$bucket,$_POST["name"]);

exit(json_encode($res));

如果这篇文章对你有用的话,那就点一波关注和小心心吧!谢谢!

php从富文本中抓出图片url,富文本编辑器抓取秀米图片转存到七牛云相关推荐

  1. python 词库 匹配_python从一段文本中找出存在于词库的词语

    python从一段文本中找出存在于词库的词语 有现成的库吗? 可能不是最佳答案,只是提供一个思路. 个人觉得这个问题并不需要什么库,先把词库载入,弄成列表什么的.然后再把你需要匹配的文本读入,反过来想 ...

  2. 图片url解析正确,但爬虫无法下载图片

    图片url解析正确,但爬虫无法下载图片 爬虫错误debug 解注释DOWNLOADER_MIDDLEWARES HTTP status code is not handled or not allow ...

  3. 记录ueditor 秀米图片上传到本地错误

    1.在config.json里面配置你的图片服务器地址 不添加会发送一个这样的请求,action='' undefine[]=图片地址. 2.编写秀米图片本地化上传方法 uploadUrlFile 是 ...

  4. 如何从一个大规模的文本中筛选出符合条件的记录

    现在是大数据时代.尤其是互联网企业,任何一个人都有可能拿到一份庞大的数据.不管你是否具有数据处理的能力,你都要面对它. 面对突如其来的一份庞大的数据,该怎样来对付它呢?这时候用SqlCel正是一个非常 ...

  5. Excel如何批量从中英文混合文本中提取出汉字

    如下图,B列单元格为中英文混合文本,现在想要批量从B列单元格中提取出汉字. ​ 选中B2:B11单元格区域 点击下图选项(Excel工具箱,百度即可了解详细的下载安装方法,本文这里就不做具体介绍.) ...

  6. 字符文本中的字符太多_文本对抗---字符级别的攻击

    最近看了一些字符级别的文本攻击方法,目前字符级别的攻击主要就是两步:找到要攻击的地方(被攻击单词)和如何攻击,针对于这两个不同角度也有一些不一样的文章. 如何找到攻击位置 白盒攻击中可以根据损失函数或 ...

  7. 根据传入坐标和图片URL地址对图片进行切图操作、将图片转化成Base64位码

    目录 1.根据传入坐标和图片URL地址对图片进行切图操作 2.将图片转化成Base64位编码.根据传入坐标 算出切点坐标 在开发过程的学习记录,此两个工具类主要是对图像的处理(切图),对文件的想换转化 ...

  8. python下载图片代码并解析_Python爬取小姐姐图片代码_批量下载

    本帖最后由 OnlineYx 于 2021-1-13 14:44 编辑 我试着改了一下,写了个循环和判断,输出起始网页的ID和结束网页的ID就能批量地下载小姐姐了. 001.png (83.38 KB ...

  9. python数据分类聚类案例_python 文本聚类分析案例——从若干文本中聚类出一些主题词团...

    说明 实验要求:对若干条文本进行聚类分析,最终得到几个主题词团. 实验思路:将数据进行预处理之后,先进行结巴分词.去除停用词,然后把文档生成tfidf矩阵,再通过K-means聚类,最后得到几个类的主 ...

最新文章

  1. MySQL 优化原理(二)
  2. 【白话机器学习】算法理论+实战之关联规则
  3. 机器学习实践七----异常检测和推荐系统
  4. mysql df_MySQL主从复制实战
  5. 查看当前提供了哪些引擎
  6. Magento获取产品自定义属性及对应的值
  7. sqlite字段类型说明
  8. 麦克风阵列信号基础(十一)
  9. RGB图像中值平滑和均值平滑
  10. 公钥与私钥 数字签名是什么?
  11. Set,Map数据结构
  12. 《区块链技术指南》摘要
  13. 机器码、序列号、认证码、注册码的生成算法(一)
  14. 免费好用的虚拟服务器,六大免费好用的虚拟主机管理系统
  15. php关键词分析工具,搜索引擎关键词查询分析工具
  16. 掌握哪些知识,才能被称得上一名合格的前端开发工程师?
  17. WhatsApp的下载与更新
  18. 八问顺丰,被你们偷的iPad究竟何时能赔?
  19. 数据分析师常见面试题.
  20. 关于电脑注册表regedit自定义管理右键菜单选项实例(删除增加)

热门文章

  1. android 你访问的站点在新浪微博认证失败,Android Oauth 认证多个新浪微博账号时,报 api.t.sina.com.cn:80!!...
  2. 【Unity3D开发小游戏】《我的世界游戏》Unity开发教程
  3. 百度二级域名大全【源于百度粉丝】
  4. 当你的手机通讯录被删除了怎么找回
  5. 自定义控件 - 流式布局(FlowLayout)
  6. 趣解ospf网络类型
  7. Markdown学习,Windows常用快捷键,Dos命令,编译运行
  8. 超可爱萝莉双胞胎跳舞
  9. 支付宝小程序中使用F2图表
  10. 邮箱怎么申请注册?如何申请个人邮箱?