java解析富文本处理Img标签

1)后台上传的时候用的是相对路径,前端显示需要的是最对路径

用一个工具类即可(需要用到 jsoup )(下载地址:https://jsoup.org/download)

在pom 引入:

<dependency>
  <!-- jsoup HTML parser library @ https://jsoup.org/ -->
  <groupId>org.jsoup</groupId>
  <artifactId>jsoup</artifactId>
  <version>1.11.3</version>
</dependency>

public static String documentBody (String url) {
        Element doc = Jsoup.parseBodyFragment(url).body();
        Elements pngs = doc.select("img[src]");
        String httpHost = "http://192.168.110.100";
        for (Element element : pngs) {
            String imgUrl = element.attr("src");
            if (imgUrl.trim().startsWith("/")) { // 会去匹配我们富文本的图片的 src 的相对路径的首个字符,请注意一下
                imgUrl =httpHost + imgUrl;
                element.attr("src", imgUrl);
            }
        }
      return url = doc.toString();
    }
public static void main(String[] args) {
String documentBody = documentBody("<div><img src='/123.jpg'></div>");
System.out.println(documentBody);

}

执行结果:



2)怎样将富文本的图片的 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;
}

执行结果:

['123.jpg']


猜你喜欢

转载自blog.csdn.net/qq_36773257/article/details/80336359
今日推荐