zoukankan      html  css  js  c++  java
  • 【转】java去除html代码中含有的html、js、css标签,获取文字内容

    【原文】:https://blog.csdn.net/u010882234/article/details/80585175

    /**
     * 去除文章内容页页面代码里的HTML标签
     * Created by yanyl on 2018/6/4.
     */
    public class DelTagsUtil {
        /**
         * 去除html代码中含有的标签
         * @param htmlStr
         * @return
         */
        public static String delHtmlTags(String htmlStr) {
            //定义script的正则表达式,去除js可以防止注入
            String scriptRegex="<script[^>]*?>[\s\S]*?<\/script>";
            //定义style的正则表达式,去除style样式,防止css代码过多时只截取到css样式代码
            String styleRegex="<style[^>]*?>[\s\S]*?<\/style>";
            //定义HTML标签的正则表达式,去除标签,只提取文字内容
            String htmlRegex="<[^>]+>";
            //定义空格,回车,换行符,制表符
            String spaceRegex = "\s*|	|
    |
    ";
     
            // 过滤script标签
            htmlStr = htmlStr.replaceAll(scriptRegex, "");
            // 过滤style标签
            htmlStr = htmlStr.replaceAll(styleRegex, "");
            // 过滤html标签
            htmlStr = htmlStr.replaceAll(htmlRegex, "");
            // 过滤空格等
            htmlStr = htmlStr.replaceAll(spaceRegex, "");
            return htmlStr.trim(); // 返回文本字符串
        }
        /**
         * 获取HTML代码里的内容
         * @param htmlStr
         * @return
         */
        public static String getTextFromHtml(String htmlStr){
            //去除html标签
            htmlStr = delHtmlTags(htmlStr);
            //去除空格" "
            htmlStr = htmlStr.replaceAll(" ","");
            return htmlStr;
        }
     
        public static void main(String[] args){
            String htmlStr= "<script type>var i=1; alert(i)</script><style> .font1{font-size:12px}</style><span>少年中国说。</span>红日初升,其道大光。<h3>河出伏流,一泻汪洋。</h3>潜龙腾渊, 鳞爪飞扬。乳 虎啸  谷,百兽震惶。鹰隼试翼,风尘吸张。奇花初胎,矞矞皇皇。干将发硎,有作其芒。天戴其苍,地履其黄。纵有千古,横有" +
                    "八荒。<a href="www.baidu.com">前途似海,来日方长</a>。<h1>美哉我少年中国,与天不老!</h1><p>壮哉我中国少年,与国无疆!</p>";
            System.out.println(getTextFromHtml(htmlStr));
        }
     
    }

    main方法运行结果

    少年中国说。红日初升,其道大光。河出伏流,一泻汪洋。潜龙腾渊,鳞爪飞扬。乳虎啸谷,百兽震惶。鹰隼试翼,风尘吸张。奇花初胎,矞矞皇皇。干将发硎,有作其芒。天戴其苍,地履其黄。纵有千古,横有八荒。前途似海,来日方长。美哉我少年中国,与天不老!壮哉我中国少年,与国无疆!



    忽略下面这两段

    修改之处,因为实际中有些文本比较特殊,比如用<>括起来的文本: <敢教日月换新天>  ,上面的处理方式也会将这段当做是html标签,然后给处理掉了,对这句正则稍作修改即可,所以有特殊需求的,可以根据具体的需求进行修改

    //定义HTML标签的正则表达式,去除标签,只提取文字内容
     String htmlRegex="<[^>]+>";
    
    改为: String htmlRegex="<[^>]+/>";


    最后贴一段代码,供参考:

    /**
         * 去除字符串中的html标签.
         * <p>
         * <pre>
         * StringUtils.replaceHtml(null)  = ""
         * StringUtils.replaceHtml("")    = ""
         * StringUtils.replaceHtml("<td>content</td>") = "content"
         * StringUtils.replaceHtml("<>content</td>") = ""
         * </pre>
         *
         * @param html 要处理的字符串,可以为 null
         * @return String 
         *
         */
        public static String replaceHtml(String html) {
            if (StringUtils.isBlank(html)) {
                return StringUtils.EMPTY;
            }
            String regEx = "<.+?>";
            Pattern p = Pattern.compile(regEx);
            Matcher m = p.matcher(html);
            String s = m.replaceAll(StringUtils.EMPTY);
            s = s.replaceAll("<[^>]*>", "");
            return s;
        }
  • 相关阅读:
    CLR(Common Language Runtime)
    六个经典的英语面试问题
    XML基本知识(三)
    vc++中各种字符串(转载)
    winform窗体间传值
    jQuery实现按比例缩放图片
    .net中几个名词解释
    XML Schema 定义
    C#中TreeView组件使用方法初步
    微软电话面试题
  • 原文地址:https://www.cnblogs.com/Guhongying/p/14333626.html
Copyright © 2011-2022 走看看