1. 程式人生 > >java 解析富文本處理 img 標簽

java 解析富文本處理 img 標簽

() fin spa star soup turn 需要 compile new

很多項目都需要到富文本來添加內容,就好比新聞啊,旅遊景點之類的,都需要使用富文本去添加數據,然而怎麽我這邊就發現了兩個問題

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 標簽