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 = "<";
//"
public static final String QUOT = """;
//&
public static final String AMP = "&";
//空格
public static final String SPACE = " ";
//©
public static final String COPYRIGHT = "©";
//®
public static final String REG = "®";
//™
public static final String TM = "™";
//¥
public static final String RMB = "¥";
/**
* 删除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")));
}
}
分享到:
相关推荐
java将.docx文件和.doc文件转为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++工具类-常用工具类源码**"所涵盖的知识点,主要围绕文件处理、编码处理、字符串...
使用java工具类可有效的提高开发效率! 没有CSDN积分的朋友到这里源头下载:http://www.javacs.cn/bbs/thread-382-1-1.html 感谢支持 [工具类] CookieCounter .java.txt [工具类] 验证码img .jsp.txt [工具类] Java中...
3. HTML 工具类:Hutool 的 HtmlUtil 工具类提供了 HTML 编码、解码、清除 HTML 标签、过滤 HTML 文本等功能,可以防止 XSS 攻击和 SQL 注入。 4. 定时任务:Hutool 的 CronUtil 工具类提供了定时任务的功能,支持 ...
【标题】"excel转换html类(Excel2HtmlUtil的JAVA类)"所涉及的知识点主要集中在Java编程语言上,特别是如何使用Java处理Excel文件并将其转换为HTML格式。这个标题表明存在一个名为`Excel2HtmlUtil`的Java类,该类实现...
这个“java html转pdf工具类”提供了一种便捷的方法来实现这个功能。以下是一些关于这个主题的重要知识点: 1. **iText和 Flying Saucer**: 这两个是Java中最常用的库,用于将HTML转换为PDF。iText是一个强大的PDF...
在IT行业中,Java是一种广泛应用的编程语言,尤其在构建Web应用程序方面。本示例将探讨如何使用Java生成HTML...总的来说,Java生成HTML文件的能力是构建动态网站、自动化报告或API文档等众多应用场景中的一个重要工具。
提供从html中提取纯文本,从HTML中提取图片链接集合;使用于富文本编辑器存在数据库里面的网页处理
这个“字符转换工具类”似乎是一个专门为生成HTML源码而设计的工具,它包含了全面的源码实现,并且每个方法都有详细的注释,方便开发者理解和使用。 在Java编程中,字符编码是一个关键概念,因为不同的编码标准(如...
JavaScript 后台调用工具类是一种实用的编程资源,它为开发者提供了在后台环境中使用 JavaScript 进行操作的便利。这个工具类旨在简化JavaScript代码,让开发者能够更高效地进行项目开发,尤其对于不熟悉JavaScript...
这个【标题】提到的“Java中HTML转义与反转义工具类”提供了一组实用方法,帮助开发者进行这方面的操作。以下是对该工具类的详细说明: 首先,我们看到类`EscapeUtil`中定义了一个二维字符数组`TEXT`,用于存储HTML...
此工具类是为了去除前端传过来的html标签
例如,一个工具类可能会提供一个方法,如`parseHTML(htmlString)`,将HTML字符串转化为DOM对象,这样开发者就可以方便地对网页结构进行操作。 其次,网页工具类通常包含对用户输入的过滤和验证功能。在Web开发中,...
在Android开发过程中,工具类(Utility Class)是开发者不可或缺的好帮手。它们通常包含一系列静态方法,用于执行特定任务,如日期时间处理、网络请求、数据解析等,从而提高代码的复用性和效率。以下是一些Android...
本篇将详细介绍如何在JSP中应用工具类,特别是名为"functionUtils"的工具类,以及它如何帮助我们实现查询等功能。 1. 创建工具类 首先,我们需要创建一个名为`FunctionUtils.java`的Java类。这个类通常位于项目的`...
html转码工具类、方便、简洁、好用 “参数”.encodeHtml(); 转码 “参数”.decodeHtml(); 解码
在Java Android开发中,工具类(Utils类)是开发者经常使用的辅助代码集合,它们封装了一些通用功能,方便在多个类中复用,提高代码的可维护性和可读性。以下是一些常见的Java Android工具类及其包含的知识点: 1. ...
`UnHtmlScript`工具类就是为了解决这个问题而设计的,它能够帮助开发者有效地过滤掉HTML、CSS和JavaScript标签,提取出纯文本内容。 HTML标签是用来构建网页结构的,例如`<p>`用于段落,`<a>`用于链接等。CSS则是...