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("<");
break;
case '>':
filtered.append(">");
break;
case '"':
filtered.append(""");
break;
case '&':
filtered.append("&");
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标签的过程。这种技术广泛应用于Web开发中,例如删除恶意代码、防止XSS攻击、显示纯文本等。 在Java中,过滤Html标签的方法有多种,包括...
根据提供的文件信息,本文将详细解释C#中用于过滤HTML标签的几种方法,并对每一步进行深入解析。此过程涉及正则表达式、字符串替换以及HTML实体编码转换等技术细节。 ### C#过滤HTML标签的方法 #### 方法一:使用...
### Java正则表达式过滤HTML标签 在处理文本数据时,经常会遇到需要从HTML文档中提取纯文本内容的需求。为了去除HTML标记并保留有意义的文字部分,可以利用Java中的正则表达式来实现这一功能。本篇文章将详细介绍...
标题“过滤HTML标签函数”所指的就是这样一个功能,它能够帮助我们清理和标准化文本,防止XSS(跨站脚本攻击)等安全问题,或者仅仅是为了提取纯文本内容。 描述中提到的“过滤html标签的代码,如果只是把类似的...
为了便于复用,可以创建一个工具类,封装读取和过滤HTML的功能。例如: ```java public class HtmlFilter { public static String filterHtmlTags(String html, String... tagsToFilter) { // 使用Jsoup或其他...
1. **HTML标签去除**:这个工具类可能会提供一个方法,例如`removeHtmlTags(String content)`,用于删除HTML标签,只保留文本内容。这通常涉及到正则表达式,如`/*?>/g`,来匹配并替换HTML标签。 2. **CSS去除**:...
### 过滤字符串中的HTML标签 在Web开发和文本处理领域中,经常需要对包含HTML(HyperText Markup Language)标签的字符串进行清洗,以便只保留其中的纯文本内容。这通常是为了提高数据的安全性、可读性和易于处理。...
在互联网编程中,过滤HTML标签是一个常见需求,尤其在处理用户输入的内容时,防止潜在的跨站脚本攻击(XSS)等安全问题。本文将详细介绍如何使用JavaScript中的正则表达式来过滤HTML标签,通过一个简单的实例来演示...
"html标签过滤标签jar包"是一个这样的库,它提供了一种便捷的方式,允许在JSP页面直接处理和过滤HTML标签。 这个jar包包含了一系列预定义的过滤规则,可以识别并移除或者转义用户提交的HTML字符串中的潜在危险元素...
在Java编程中,"java过滤html代码"是一个常见的需求,主要目的是为了安全考虑,比如防止XSS(跨站脚本攻击)或者为了提取纯文本内容。这个任务可以通过使用正则表达式来实现,正如描述中提到的那样。下面我们将详细...
本文将深入探讨两种主要的C#过滤HTML标签的方法,帮助开发者选择最适合自己项目的技术方案。 首先,我们要明确HTML过滤的目标,通常是为了防止XSS(跨站脚本攻击)或确保数据在显示时安全无害。HTML标签可以被恶意...
### ASP.NET 中使用正则表达式过滤HTML标签的详细解析 在Web开发中,经常需要对用户输入的数据进行处理,特别是在展示用户提交的内容时,为了防止XSS攻击或确保页面的整洁度,去除HTML标签变得至关重要。本文将详细...
本篇文章将详细解释如何使用C#的正则表达式来过滤HTML标签,以便将HTML字符串转换为纯文本。 首先,我们需要了解HTML标签的基本结构。HTML标签通常由尖括号 `和 `>` 包围,如 `<div>` 和 `</div>`。一些特殊的标签...
在IT行业中,尤其是在Web开发和数据处理领域,过滤HTML元素字符是一项重要的任务。这主要涉及到对用户输入的数据进行清理和安全处理,以防止跨站脚本(XSS)攻击和其他潜在的安全威胁。本文将深入探讨如何过滤HTML...
5. 使用String类型的数组来存储需要替换的html标签:在将html内容转换为文本时,需要将html标签替换为指定的文本。可以使用String类型的数组来存储需要替换的html标签,并使用replaceEach函数实现批量替换。 6. ...
以下代码展示了如何使用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....
这个类可能包含了一系列的方法,如`filterHtmlTags(String input)`,用于删除或替换不安全的HTML标签。 4. **DOM解析与遍历**:更复杂的情况可能涉及到使用DOM解析器(如JDOM或Jsoup)来解析整个HTML文档,然后遍历...
因此,过滤HTML标签以获取纯文本信息成为了一项重要的技术需求。 从给定文件描述中,我们可以提取到知识点:使用Java语言,利用正则表达式来过滤HTML标签,提取纯文本信息。下面是详细的知识点解析: 知识点一:...
### 正则表达式清除HTML标签 在.NET开发过程中,我们经常会遇到需要处理HTML文档的情况。其中一项常见的任务就是从文本中移除HTML标签。这不仅有助于提高数据的安全性(例如防止XSS攻击),还能方便地提取纯文本...
本文实例讲述了ASP.NET过滤HTML标签只保留换行与空格的方法。分享给大家供大家参考。具体分析如下: 自己从网上找了一个过滤HTML标签的方法,我也不知道谁的才是原创的,反正很多都一样。我把那方法复制下来,代码...