2019独角兽企业重金招聘Python工程师标准>>>

解决思路:在本地展示使用本地的src,发送到微信的时候使用微信的src.要实现功能,先需要做一些工作.

1.在富文本框中上传图片的时候,使用本地图片地址插入到img标签中,并且将微信的src保存到data-src.

<img wxImg-src="weixinurl" src="localurl"/>

2.在提交到后台的时候,使用Jsoup将src中的内容替换为wxImg-src.

   /*** 将htmlBody中所有img标签中的src内容替换为原data-src的内容,* <br/>如果不报含data-src,则src的内容不会被替换* <br/>例如: * <br/> 替换前 &lt;img data-src="weixinImgUrl" src="localImgUrl" othreAttr="其他属性不变"/&gt;* <br/> 替换后 &lt;img src="weixinImgUrl" othreAttr="其他属性不变" /&gt;* @param htmlBody html内容* @return 返回替换后的内容* @author Leon Tan*/public static String replaceImgSrcFromDataSrc(String htmlBody) {Document document = Jsoup.parseBodyFragment(htmlBody);Elements nodes = document.select("img");int nodeLenth = nodes.size();for (int i = 0; i < nodeLenth; i++) {Element e = nodes.get(i);String dataSrc = e.attr("data-src");if (StringUtils.isNotBlank(dataSrc)){System.out.println(dataSrc);e.attr("src", dataSrc);e.removeAttr("data-src");}}if (htmlBody.contains("<html>")){return document.toString();}else{return document.select("body>*").toString();}}// 测试代码public static void main(String[] args) {String context = "<div>" +"  <div>123123123123<p>asdfasdfasdf</p></div>" +"  <img data-src=\"http://mmbiz.qpic.cn/mmbiz_jpg/iamNUozwoQLl1Pta8vlKQRJgcZzwzbcpxnNaQ1Xy1eAt90On0SwzVabQPeMXN6ksvrSXVhkpiaAYFC0XesYqFTng/640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy=1\" src=\"http://www.fong.site/pic135editor/50014/7356.jpg\"/>" +"  <p><img data-src=\"weixin\" style=\"width:99px;\" src=\"local\"/></p>" +"  <p><img src=\"没有data-src\"/></p>" +"</div>";System.out.println(replaceImgSrcFromDataSrc(context));}

3.将最终返回的结果另存到一个新的字段中,这样在本地显示的时候,就获取原字段内容,发送给微信的时候就取新字段内容.

输出

<div> <div>123123123123<p>asdfasdfasdf</p></div> <img src="http://mmbiz.qpic.cn/mmbiz_jpg/iamNUozwoQLl1Pta8vlKQRJgcZzwzbcpxnNaQ1Xy1eAt90On0SwzVabQPeMXN6ksvrSXVhkpiaAYFC0XesYqFTng/640?wx_fmt=jpeg&amp;tp=webp&amp;wxfrom=5&amp;wx_lazy=1"> <p><img style="width:99px;" src="weixin"></p> <p><img src="没有data-src"></p>
</div>

///

无关说明

本来第一时间想到的是使用正则表达式来做,但是做出来之后感觉很大局限性.

//通过正则表达式将img标签中的src内容替换为data-src中的内容

    /*** 通过正则表达式将img标签中的src内容替换为data-src中的内容* @param context 要替换的内容* @return* @author Leon Tan*/public static String replaceImgSrcFromDataSrc(String context){Pattern p = Pattern.compile("((data-src|src)\\s*=(\"|\')[0-9a-zA-Z:/\\.\\?\\s_\\-=&]*(\"|\'))", Pattern.CASE_INSENSITIVE);Matcher m = p.matcher(context);StringBuffer sb = new StringBuffer(context);String temp = null;int replaceIndex = 0;while (m.find()) {String find = m.group();if (find.indexOf("data-src") > -1){temp = find;}else{if (temp != null){replaceIndex = sb.indexOf(find, replaceIndex);sb.replace(replaceIndex, replaceIndex+find.length(), "src"+temp.substring(8));}}}return sb.toString();}

本文地址:https://my.oschina.net/longfong/blog/819883

转载于:https://my.oschina.net/longfong/blog/819883

Jsoup 替换文本中所有的img src属性相关推荐

  1. python如何替换文件部分内容_python 实现批量替换文本中的某部分内容

    一.介绍 在做YOLOv3项目时,会需要将文本文件中的某部分内容进行批量替换和修改,所以编写了python程序批量替换所有文本文件中特定部分的内容. 二.代码实现 import re import o ...

  2. python一键替换_python 实现批量替换文本中的某部分内容

    一.介绍 在做YOLOv3项目时,会需要将文本文件中的某部分内容进行批量替换和修改,所以编写了python程序批量替换所有文本文件中特定部分的内容. 二.代码实现 import re import o ...

  3. 富文本上传的内容中img标签的src属性丢失

    在一次项目上线后,突然发现后台系统的上传图片功能出了问题.是要发布一篇文章,文章内容是以富文本的形式保存的,上传图片后发现图片显示不出来,看数据库保存的字段发现img标签没有src属性,当时就奇了怪了 ...

  4. HTML中img标签的src属性为绝对路径时,在IE中图片可显示,在firefox中不行

    HTML中img标签的src属性为绝对路径时,在IE中图片可显示,在firefox中不行 下图,src中为图片的绝对路径,此时在IE浏览器中图片可显示出来,firefox浏览器中图片不能显示出来 代码 ...

  5. java 文本编辑器替换特殊字符_linux中批量替换文本中字符串--转载

    (一)通过vi编辑器来替换. vi/vim 中可以使用 :s 命令来替换字符串. :s/well/good/ 替换当前行第一个 well 为 good :s/well/good/g 替换当前行所有 w ...

  6. 一个正则替换:一段文本中有若干a img标记,替换文本中的某些词,不包含除了a img标记 中的文字、属性...

    如: abcd</br> cabcdef <a href="">abcdef</a> <img title="cabcdef&q ...

  7. 批量替换文本中的多组字符串

    [问题] hi friends, I have the following demand and I want to know if you have any suggestions for me: ...

  8. Excel 2010 VBA 入门 048 批量替换文本中的指定字符(replayce函数和方法)

    目录 示例: 实现代码 Replace函数 单元格对象的Replace方法 使用Replace方法实现代码 示例: 如图所示,该表为某公司商品编码.由于商品目录升级,现商品编码中以"GXGY ...

  9. 使用js替换文本中的换行符

    核心语句: 使用正则表达式: txts=txts.replace(/[\n\r]/g,'需替换的内容') 如何用js替换文本里的换行符 \n?

最新文章

  1. R语言ggplot2可视化:将dataframe和数据列名称传递给函数通过函数进行ggplot2可视化输出
  2. Oracle SQL 空值排序(Nulls)
  3. mysql数据库安全配置规范_MySQL数据库安全配置规范操作
  4. 优先队列(priority_queue)的原理及用法
  5. hdu2923 最短路floyd
  6. python django用户登录系统_Django实现用户注册登录
  7. 关于字符匹配所引起的的问题
  8. 数据库操作 linq php,.NET_asp.net使用LINQ to SQL连接数据库及SQL操作语句用法分析,本文实例讲述了asp.net使用LINQ t - phpStudy...
  9. js中WINDOW对象
  10. TCP/IP的全部IP协议号
  11. C语言程序设计第三版微课版,C语言程序设计(第3版 微课版)
  12. 帐号 快速看图cad_cad快速看图下载
  13. mysql 内连接查询三表数据_数据库三表连接查询怎么做
  14. linux终端命令大全(完善中)
  15. 电机专题2:直流有刷电机工作原理
  16. visio双线方框怎么画_用VISIO怎样画出扇形
  17. 基于堡垒主机概念的运维审计系统
  18. 从svn拉下的代码无状态图标(绿色对勾)的解决方法
  19. 聊天机器人之语音识别科大讯飞 Node.js SDK
  20. java:上传微信临时文件的素材

热门文章

  1. 5.2基于JWT的令牌生成和定制「深入浅出ASP.NET Core系列」
  2. Java设计模式之策略模式与状态模式
  3. mongodb的锁和高并发
  4. Git学习系列之Git基本操作提交项目(图文详解)
  5. Template Method(模板方法)模式
  6. Java并发——ReentrantLock
  7. RHCSA 系列(六): 使用 Parted 和 SSM 来配置和加密系统存储
  8. vuejs学习笔记(1)--属性,事件绑定,ajax
  9. Linux下的网络管理工具—OpenNMS
  10. 产品经理技能树之 数据体系