package com.fdage.util;

import org.apache.commons.lang3.StringEscapeUtils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 * Created by Hb_zzZ on 2019/9/24.
 */
public class HTMLSpirit {

    public static void main(String[] args) {
        String s = "<p><span style=\"color: rgb(21, 1, 1);\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;元青花萧何月下追韩信梅瓶，口部短小，肩腹部浑圆，下腹部瘦长，平底。通体绘有青花纹饰，肩部绘杂宝及缠枝牡丹花纹，牡丹可谓花中之魁，象征“雍容华贵，大气超凡”；整件器物造型端庄、稳重，胎质洁白致密，青花发色苍翠浓艳，而瓶中所绘人物的生动神情尤其精彩：萧何策马狂奔时的焦虑、韩信河边观望的踌躇不定、老艄公持桨而立的期待，都被表现得淋漓尽致。</span></p><p><span style=\"color: rgb(21, 1, 1);\"> 而空白处则衬以苍松、梅竹、山石，显得错落有致。纹饰宜人漂亮，青花用料浓淡相宜，发色明丽，富有层次感，周身散发着美器的光泽，绘有象征“身份尊贵、帝王之气”宝莲纹，堪称元末明初青花瓷中的绝品佳作。像这样的青花梅瓶全世界只有三件，一件收藏于江苏省南京市博物馆，系该馆的“镇馆之宝”，一件仍在海外下落不明。</span></p>";
        System.out.println(StringEscapeUtils.unescapeHtml4(s));
        System.out.println(delHTMLTag(StringEscapeUtils.unescapeHtml4(s)));
    }

    public static String delHTMLTag(String htmlStr){
        String regEx_script="<script[^>]*?>[\\s\\S]*?<\\/script>"; //定义script的正则表达式
        String regEx_style="<style[^>]*?>[\\s\\S]*?<\\/style>"; //定义style的正则表达式
        String regEx_html="<[^>]+>"; //定义HTML标签的正则表达式

        Pattern p_script=Pattern.compile(regEx_script,Pattern.CASE_INSENSITIVE);
        Matcher m_script=p_script.matcher(htmlStr);
        htmlStr=m_script.replaceAll(""); //过滤script标签

        Pattern p_style=Pattern.compile(regEx_style,Pattern.CASE_INSENSITIVE);
        Matcher m_style=p_style.matcher(htmlStr);
        htmlStr=m_style.replaceAll(""); //过滤style标签

        Pattern p_html=Pattern.compile(regEx_html,Pattern.CASE_INSENSITIVE);
        Matcher m_html=p_html.matcher(htmlStr);
        htmlStr=m_html.replaceAll(""); //过滤html标签

        return htmlStr.trim(); //返回文本字符串
    }

    public static String stripHtml(String content) {
        // <p>段落替换为换行
        content = content.replaceAll("<p .*?>", "\r\n");
        // <br><br/>替换为换行
        content = content.replaceAll("<br\\s*/?>", "\r\n");
        // 去掉其它的<>之间的东西
        content = content.replaceAll("\\<.*?>", "");
        // 还原HTML
        // content = HTMLDecoder.decode(content);
        return content;
    }
}
