`
chengyu2099
  • 浏览: 471528 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

string 过滤 html 标签

阅读更多
package com.linkage.util;
import java.util.regex.Matcher;   
import java.util.regex.Pattern;   
  
/**  
 * <p>  
 * Title: HTML相关的正则表达式工具类  
 * </p>  
 * <p>  
 * Description: 包括过滤HTML标记,转换HTML标记,替换特定HTML标记  
 * </p>  
 * <p>  
 * Copyright: Copyright (c) 2006  
 * </p>  
 *   
 * @author chengRenYin  
 * @version 1.0  
 * @createtime 2010-1-27
 */  
  
public class HtmlRegexpUtil {   
    private final static String regxpForHtml = "<([^>]*)>"; // 过滤所有以<开头以>结尾的标签   
  
    private final static String regxpForImgTag = "<\\s*img\\s+([^>]*)\\s*>"; // 找出IMG标签   
  
    private final static String regxpForImaTagSrcAttrib = "src=\"([^\"]+)\""; // 找出IMG标签的SRC属性   
  
    /**  
     *   
     */  
    public HtmlRegexpUtil() {   
        // TODO Auto-generated constructor stub   
    }   
  
    /**  
     *   
     * 基本功能:替换标记以正常显示  
     * <p>  
     *   
     * @param input  
     * @return String  
     */  
    public String replaceTag(String input) {   
        if (!hasSpecialChars(input)) {   
            return input;   
        }   
        StringBuffer filtered = new StringBuffer(input.length());   
        char c;   
        for (int i = 0; i <= input.length() - 1; i++) {   
            c = input.charAt(i);   
            switch (c) {   
            case '<':   
                filtered.append("&lt;");   
                break;   
            case '>':   
                filtered.append("&gt;");   
                break;   
            case '"':   
                filtered.append("&quot;");   
                break;   
            case '&':   
                filtered.append("&amp;");   
                break;   
            default:   
                filtered.append(c);   
            }   
  
        }   
        return (filtered.toString());   
    }   
  
    /**  
     *   
     * 基本功能:判断标记是否存在  
     * <p>  
     *   
     * @param input  
     * @return boolean  
     */  
    public boolean hasSpecialChars(String input) {   
        boolean flag = false;   
        if ((input != null) && (input.length() > 0)) {   
            char c;   
            for (int i = 0; i <= input.length() - 1; i++) {   
                c = input.charAt(i);   
                switch (c) {   
                case '>':   
                    flag = true;   
                    break;   
                case '<':   
                    flag = true;   
                    break;   
                case '"':   
                    flag = true;   
                    break;   
                case '&':   
                    flag = true;   
                    break;   
                }   
            }   
        }   
        return flag;   
    }   
  
    /**  
     *   
     * 基本功能:过滤所有以"<"开头以">"结尾的标签  
     * <p>  
     *   
     * @param str  
     * @return String  
     */  
    public static String filterHtml(String str) {   
        Pattern pattern = Pattern.compile(regxpForHtml);   
        Matcher matcher = pattern.matcher(str);   
        StringBuffer sb = new StringBuffer();   
        boolean result1 = matcher.find();   
        while (result1) {   
            matcher.appendReplacement(sb, "");   
            result1 = matcher.find();   
        }   
        matcher.appendTail(sb);   
        return sb.toString();   
    }   
  
    /**  
     *   
     * 基本功能:过滤指定标签  
     * <p>  
     *   
     * @param str  
     * @param tag  
     *            指定标签  
     * @return String  
     */  
    public static String fiterHtmlTag(String str, String tag) {   
        String regxp = "<\\s*" + tag + "\\s+([^>]*)\\s*>";   
        Pattern pattern = Pattern.compile(regxp);   
        Matcher matcher = pattern.matcher(str);   
        StringBuffer sb = new StringBuffer();   
        boolean result1 = matcher.find();   
        while (result1) {   
            matcher.appendReplacement(sb, "");   
            result1 = matcher.find();   
        }   
        matcher.appendTail(sb);   
        return sb.toString();   
    }   
  
    /**  
     *   
     * 基本功能:替换指定的标签  
     * <p>  
     *   
     * @param str  
     * @param beforeTag  
     *            要替换的标签  
     * @param tagAttrib  
     *            要替换的标签属性值  
     * @param startTag  
     *            新标签开始标记  
     * @param endTag  
     *            新标签结束标记  
     * @return String  
     * @如:替换img标签的src属性值为[img]属性值[/img]  
     */  
    public static String replaceHtmlTag(String str, String beforeTag,   
            String tagAttrib, String startTag, String endTag) {   
        String regxpForTag = "<\\s*" + beforeTag + "\\s+([^>]*)\\s*>";   
        String regxpForTagAttrib = tagAttrib + "=\"([^\"]+)\"";   
        Pattern patternForTag = Pattern.compile(regxpForTag);   
        Pattern patternForAttrib = Pattern.compile(regxpForTagAttrib);   
        Matcher matcherForTag = patternForTag.matcher(str);   
        StringBuffer sb = new StringBuffer();   
        boolean result = matcherForTag.find();   
        while (result) {   
            StringBuffer sbreplace = new StringBuffer();   
            Matcher matcherForAttrib = patternForAttrib.matcher(matcherForTag   
                    .group(1));   
            if (matcherForAttrib.find()) {   
                matcherForAttrib.appendReplacement(sbreplace, startTag   
                        + matcherForAttrib.group(1) + endTag);   
            }   
            matcherForTag.appendReplacement(sb, sbreplace.toString());   
            result = matcherForTag.find();   
        }   
        matcherForTag.appendTail(sb);   
        return sb.toString();   
    }   
}  
string 过滤 html 标签
分享到:
评论

相关推荐

    Java 中 过滤Html标签

    "Java 中过滤Html标签" Java 中过滤Html标签是指在Java语言中删除或替换HTML标签的过程。这种技术广泛应用于Web开发中,例如删除恶意代码、防止XSS攻击、显示纯文本等。 在Java中,过滤Html标签的方法有多种,包括...

    C# 过滤HTML标签的几种方法

    根据提供的文件信息,本文将详细解释C#中用于过滤HTML标签的几种方法,并对每一步进行深入解析。此过程涉及正则表达式、字符串替换以及HTML实体编码转换等技术细节。 ### C#过滤HTML标签的方法 #### 方法一:使用...

    java正则表达式过滤html标签

    ### Java正则表达式过滤HTML标签 在处理文本数据时,经常会遇到需要从HTML文档中提取纯文本内容的需求。为了去除HTML标记并保留有意义的文字部分,可以利用Java中的正则表达式来实现这一功能。本篇文章将详细介绍...

    过滤html标签函数

    标题“过滤HTML标签函数”所指的就是这样一个功能,它能够帮助我们清理和标准化文本,防止XSS(跨站脚本攻击)等安全问题,或者仅仅是为了提取纯文本内容。 描述中提到的“过滤html标签的代码,如果只是把类似的...

    java 读取html过滤标签

    为了便于复用,可以创建一个工具类,封装读取和过滤HTML的功能。例如: ```java public class HtmlFilter { public static String filterHtmlTags(String html, String... tagsToFilter) { // 使用Jsoup或其他...

    java过滤html,css,js标签工具类(UnHtmlScript)

    1. **HTML标签去除**:这个工具类可能会提供一个方法,例如`removeHtmlTags(String content)`,用于删除HTML标签,只保留文本内容。这通常涉及到正则表达式,如`/*?&gt;/g`,来匹配并替换HTML标签。 2. **CSS去除**:...

    过滤字符串中的HTML标签

    ### 过滤字符串中的HTML标签 在Web开发和文本处理领域中,经常需要对包含HTML(HyperText Markup Language)标签的字符串进行清洗,以便只保留其中的纯文本内容。这通常是为了提高数据的安全性、可读性和易于处理。...

    js过滤HTML标签完整实例

    在互联网编程中,过滤HTML标签是一个常见需求,尤其在处理用户输入的内容时,防止潜在的跨站脚本攻击(XSS)等安全问题。本文将详细介绍如何使用JavaScript中的正则表达式来过滤HTML标签,通过一个简单的实例来演示...

    html标签过滤标签jar包

    "html标签过滤标签jar包"是一个这样的库,它提供了一种便捷的方式,允许在JSP页面直接处理和过滤HTML标签。 这个jar包包含了一系列预定义的过滤规则,可以识别并移除或者转义用户提交的HTML字符串中的潜在危险元素...

    java过滤html代码

    在Java编程中,"java过滤html代码"是一个常见的需求,主要目的是为了安全考虑,比如防止XSS(跨站脚本攻击)或者为了提取纯文本内容。这个任务可以通过使用正则表达式来实现,正如描述中提到的那样。下面我们将详细...

    C#过滤html方法

    本文将深入探讨两种主要的C#过滤HTML标签的方法,帮助开发者选择最适合自己项目的技术方案。 首先,我们要明确HTML过滤的目标,通常是为了防止XSS(跨站脚本攻击)或确保数据在显示时安全无害。HTML标签可以被恶意...

    asp.net 正则表达式过滤所有html标签

    ### ASP.NET 中使用正则表达式过滤HTML标签的详细解析 在Web开发中,经常需要对用户输入的数据进行处理,特别是在展示用户提交的内容时,为了防止XSS攻击或确保页面的整洁度,去除HTML标签变得至关重要。本文将详细...

    C#使用正则表达式过滤html标签

    本篇文章将详细解释如何使用C#的正则表达式来过滤HTML标签,以便将HTML字符串转换为纯文本。 首先,我们需要了解HTML标签的基本结构。HTML标签通常由尖括号 `和 `&gt;` 包围,如 `&lt;div&gt;` 和 `&lt;/div&gt;`。一些特殊的标签...

    过滤HTML元素字符

    在IT行业中,尤其是在Web开发和数据处理领域,过滤HTML元素字符是一项重要的任务。这主要涉及到对用户输入的数据进行清理和安全处理,以防止跨站脚本(XSS)攻击和其他潜在的安全威胁。本文将深入探讨如何过滤HTML...

    JAVA过滤标签实现将html内容转换为文本的方法示例

    5. 使用String类型的数组来存储需要替换的html标签:在将html内容转换为文本时,需要将html标签替换为指定的文本。可以使用String类型的数组来存储需要替换的html标签,并使用replaceEach函数实现批量替换。 6. ...

    java百度编辑器提交过滤标签方法

    以下代码展示了如何使用Java的`Pattern`和`Matcher`类过滤HTML、CSS和JavaScript标签: ```java java.util.regex.Pattern p_script; java.util.regex.Matcher m_script; java.util.regex.Pattern p_style; java....

    html标签过滤

    这个类可能包含了一系列的方法,如`filterHtmlTags(String input)`,用于删除或替换不安全的HTML标签。 4. **DOM解析与遍历**:更复杂的情况可能涉及到使用DOM解析器(如JDOM或Jsoup)来解析整个HTML文档,然后遍历...

    java过滤html标签获取纯文本信息的实例

    因此,过滤HTML标签以获取纯文本信息成为了一项重要的技术需求。 从给定文件描述中,我们可以提取到知识点:使用Java语言,利用正则表达式来过滤HTML标签,提取纯文本信息。下面是详细的知识点解析: 知识点一:...

    正则表达式清除html标签

    ### 正则表达式清除HTML标签 在.NET开发过程中,我们经常会遇到需要处理HTML文档的情况。其中一项常见的任务就是从文本中移除HTML标签。这不仅有助于提高数据的安全性(例如防止XSS攻击),还能方便地提取纯文本...

    ASP.NET过滤HTML标签只保留换行与空格的方法

    本文实例讲述了ASP.NET过滤HTML标签只保留换行与空格的方法。分享给大家供大家参考。具体分析如下: 自己从网上找了一个过滤HTML标签的方法,我也不知道谁的才是原创的,反正很多都一样。我把那方法复制下来,代码...

Global site tag (gtag.js) - Google Analytics