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

HTML工具类

阅读更多

 

package ssh.util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * HTML工具
 * @author gary
 *
 */
public class HTMLUtil {

	//>
	public static final String GT = ">";
	//<
	public static final String LT = "&lt;";
	//"
	public static final String QUOT = "&quot;";
	//&
	public static final String AMP = "&amp;";
	//空格
	public static final String SPACE = "&nbsp;";
	//©
	public static final String COPYRIGHT = "&copy;";
	//®
	public static final String REG = "&reg;";
	//™
	public static final String TM = "&trade;";
	//¥
	public static final String RMB = "&yen;";
	
	
	/**
	 * 删除script标签
	 * @param str
	 * @return
	 */
	public static String delScriptTag(String str){
		String regEx_script = "<script[^>]*?>[\\s\\S]*?<\\/script>";
		Pattern p_script = Pattern.compile(regEx_script,Pattern.CASE_INSENSITIVE);
		Matcher m_script = p_script.matcher(str); 
        str = m_script.replaceAll("");
        return str.trim();
	}

	/**
	 * 删除style标签
	 * @param str
	 * @return
	 */
	public static String delStyleTag(String str){
		String regEx_style="<style[^>]*?>[\\s\\S]*?<\\/style>";
        Pattern p_style = Pattern.compile(regEx_style,Pattern.CASE_INSENSITIVE); 
        Matcher m_style = p_style.matcher(str); 
        str = m_style.replaceAll("");
        return str;
	}
	
	/**
	 * 删除HTML标签
	 * @param str
	 * @return
	 */
	public static String delHTMLTag(String str){
		String regEx_html = "<[^>]+>"; 
        Pattern p_html = Pattern.compile(regEx_html,Pattern.CASE_INSENSITIVE); 
        Matcher m_html = p_html.matcher(str); 
        str = m_html.replaceAll("");
        return str;
	}
	
	/**
	 * 删除所有标签
	 * @param str
	 * @return
	 */
	public static String delAllTag(String str){ 
        //删script
        str = delScriptTag(str);
        //删style
        str = delStyleTag(str);
        //删HTML
        str = delHTMLTag(str);
        return str;
    }
	
	/**
	 * 清除标签,恢复HTML转义字符
	 * @param str
	 * @return
	 */
	public static String clean(String str){
		str = delAllTag(str);
		str = str.replaceAll(SPACE, " ");
		str = str.replaceAll(GT, ">");
		str = str.replaceAll(LT, "<");
		str = str.replaceAll(QUOT, "\"");
		str = str.replaceAll(AMP, "&");
		str = str.replaceAll(COPYRIGHT, "©");
		str = str.replaceAll(REG,"®");
		str = str.replaceAll(TM,"™");
		str = str.replaceAll(RMB,"¥");
		return str;
	}
	
	/**
	 * 过滤指定标签
	 * @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();
	}

	/**
	 * 替换指定的标签
	 * @param str
	 * @param beforeTag
	 *            要替换的标签
	 * @param tagAttrib
	 *            要替换的标签属性值
	 * @param startTag
	 *            新标签开始标记
	 * @param endTag
	 *            新标签结束标记
	 * @return String
	 * example:	替换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();
	}

	public static void main(String[] args) {
		System.out.println(clean(URLUtil.url2Str("http://www.baidu.com")));
	}
	
}
分享到:
评论
1 楼 JE帐号 2011-05-13  
Pattern 好像是线程安全的.所以可以考虑把 各个Pattern提升为静态属性.

相关推荐

    java将word转为html文件工具类

    java将.docx文件和.doc文件转为html文件的工具类。。。

    XML Worker Word转PDF/html工具类

    代码用maven方式引入jar包 无嵌入式处理word文件,工具类包括 1. docx转html处理 Docx2Html.java (poi jsoup) 2. doc转html处理 Doc2Html.java (poi jsoup) 3. word转pdf处理 Word2Pdf.java (poi itext7) 4. word...

    C++工具类-常用工具类源码

    在C++编程中,工具类是非常重要的一部分,它们提供了一系列通用功能,可以帮助开发者更高效地进行项目开发。本文将深入探讨标题"**C++工具类-常用工具类源码**"所涵盖的知识点,主要围绕文件处理、编码处理、字符串...

    【强2】30个java工具类

    使用java工具类可有效的提高开发效率! 没有CSDN积分的朋友到这里源头下载:http://www.javacs.cn/bbs/thread-382-1-1.html 感谢支持 [工具类] CookieCounter .java.txt [工具类] 验证码img .jsp.txt [工具类] Java中...

    推荐一款封装各种Util工具类,这款神仙级框架你值得拥有!.docx

    3. HTML 工具类:Hutool 的 HtmlUtil 工具类提供了 HTML 编码、解码、清除 HTML 标签、过滤 HTML 文本等功能,可以防止 XSS 攻击和 SQL 注入。 4. 定时任务:Hutool 的 CronUtil 工具类提供了定时任务的功能,支持 ...

    excel转换html类(Excel2HtmlUtil的JAVA类)

    【标题】"excel转换html类(Excel2HtmlUtil的JAVA类)"所涉及的知识点主要集中在Java编程语言上,特别是如何使用Java处理Excel文件并将其转换为HTML格式。这个标题表明存在一个名为`Excel2HtmlUtil`的Java类,该类实现...

    java html转pdf工具类

    这个“java html转pdf工具类”提供了一种便捷的方法来实现这个功能。以下是一些关于这个主题的重要知识点: 1. **iText和 Flying Saucer**: 这两个是Java中最常用的库,用于将HTML转换为PDF。iText是一个强大的PDF...

    java代码生成html文件

    在IT行业中,Java是一种广泛应用的编程语言,尤其在构建Web应用程序方面。本示例将探讨如何使用Java生成HTML...总的来说,Java生成HTML文件的能力是构建动态网站、自动化报告或API文档等众多应用场景中的一个重要工具。

    html java处理工具类

    提供从html中提取纯文本,从HTML中提取图片链接集合;使用于富文本编辑器存在数据库里面的网页处理

    字符转换工具类

    这个“字符转换工具类”似乎是一个专门为生成HTML源码而设计的工具,它包含了全面的源码实现,并且每个方法都有详细的注释,方便开发者理解和使用。 在Java编程中,字符编码是一个关键概念,因为不同的编码标准(如...

    javascript后台调用的工具类

    JavaScript 后台调用工具类是一种实用的编程资源,它为开发者提供了在后台环境中使用 JavaScript 进行操作的便利。这个工具类旨在简化JavaScript代码,让开发者能够更高效地进行项目开发,尤其对于不熟悉JavaScript...

    Java中HTML转义与反转义工具类

    这个【标题】提到的“Java中HTML转义与反转义工具类”提供了一组实用方法,帮助开发者进行这方面的操作。以下是对该工具类的详细说明: 首先,我们看到类`EscapeUtil`中定义了一个二维字符数组`TEXT`,用于存储HTML...

    后台去html标签的工具类

    此工具类是为了去除前端传过来的html标签

    两个网页工具类,用于处理页面

    例如,一个工具类可能会提供一个方法,如`parseHTML(htmlString)`,将HTML字符串转化为DOM对象,这样开发者就可以方便地对网页结构进行操作。 其次,网页工具类通常包含对用户输入的过滤和验证功能。在Web开发中,...

    Android开发常用工具类

    在Android开发过程中,工具类(Utility Class)是开发者不可或缺的好帮手。它们通常包含一系列静态方法,用于执行特定任务,如日期时间处理、网络请求、数据解析等,从而提高代码的复用性和效率。以下是一些Android...

    jsp工具类应用

    本篇将详细介绍如何在JSP中应用工具类,特别是名为"functionUtils"的工具类,以及它如何帮助我们实现查询等功能。 1. 创建工具类 首先,我们需要创建一个名为`FunctionUtils.java`的Java类。这个类通常位于项目的`...

    html转码工具类

    html转码工具类、方便、简洁、好用 “参数”.encodeHtml(); 转码 “参数”.decodeHtml(); 解码

    java android工具类

    在Java Android开发中,工具类(Utils类)是开发者经常使用的辅助代码集合,它们封装了一些通用功能,方便在多个类中复用,提高代码的可维护性和可读性。以下是一些常见的Java Android工具类及其包含的知识点: 1. ...

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

    `UnHtmlScript`工具类就是为了解决这个问题而设计的,它能够帮助开发者有效地过滤掉HTML、CSS和JavaScript标签,提取出纯文本内容。 HTML标签是用来构建网页结构的,例如`&lt;p&gt;`用于段落,`&lt;a&gt;`用于链接等。CSS则是...

Global site tag (gtag.js) - Google Analytics