java 解析富文本处理 img 标签
Posted 26个字符的天堂
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 解析富文本处理 img 标签相关的知识,希望对你有一定的参考价值。
很多项目都需要到富文本来添加内容,就好比新闻啊,旅游景点之类的,都需要使用富文本去添加数据,然而怎么我这边就发现了两个问题
1)怎样将富文本的图片的 src 获取出来?
2)后台上传的时候用的是相对路径,前端显示需要的是最对路径
我下面就记录一下解决这两个问题的方法
1):怎么将富文本的图片的 src 获取出来?很简单,就一个工具即可
public static List<String> getImgStr(String htmlStr) { List<String> list = new ArrayList<>(); String img = ""; Pattern p_image; Matcher m_image; // String regEx_img = "<img.*src=(.*?)[^>]*?>"; //图片链接地址 String regEx_img = "<img.*src\\\\s*=\\\\s*(.*?)[^>]*?>"; p_image = Pattern.compile(regEx_img, Pattern.CASE_INSENSITIVE); m_image = p_image.matcher(htmlStr); while (m_image.find()) { // 得到<img />数据 img = m_image.group(); // 匹配<img>中的src数据 Matcher m = Pattern.compile("src\\\\s*=\\\\s*\\"?(.*?)(\\"|>|\\\\s+)").matcher(img); while (m.find()) { list.add(m.group(1)); } } return list; }
即可获取到以下结果
2)后台上传的时候用的是相对路径,前端显示需要的是最对路径,下面来看看我们怎么动态去修改富文本的 img 标签的 src ,也很简单,也是一个工具即可
这里需要一个叫做 jsoup 的 jar, maven 项目的话,直接引进来就行了
<dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.11.2</version> </dependency>
下面是工具类
public static String documentBody (String newsBody) { Element doc = Jsoup.parseBodyFragment(newsBody).body(); Elements pngs = doc.select("img[src]"); String httpHost = "http://192.168.0.100"; for (Element element : pngs) { String imgUrl = element.attr("src"); if (imgUrl.trim().startsWith("/")) { // 会去匹配我们富文本的图片的 src 的相对路径的首个字符,请注意一下 imgUrl =httpHost + imgUrl; element.attr("src", imgUrl); } } return newsBody = doc.toString(); }
即可获取到以下结果
好了,以上就是这两个问题的解决方式
不喜勿喷!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
以上是关于java 解析富文本处理 img 标签的主要内容,如果未能解决你的问题,请参考以下文章