过滤 html标签(转)
2008-10-29 11:00
423 查看
遇到个问题
就是文本域内要是被人书写恶意的js 代码或者html的话
会对整个系统产生严重的影响
找了些资料
自己也正在学习中...
网上转载一篇相关文章
代码:
import java.util.regex.Pattern;
public class Test
{
public static void main(String[] args)
{
String ww="<html>sss<body>ss</body>ssss</html>";
String ff=html2Text(ww);
System.out.println(ff);
}
public static String html2Text(String inputString) {
String htmlStr = inputString; // 含html标签的字符串
String textStr = "";
java.util.regex.Pattern p_script;
java.util.regex.Matcher m_script;
java.util.regex.Pattern p_style;
java.util.regex.Matcher m_style;
java.util.regex.Pattern p_html;
java.util.regex.Matcher m_html;
try {
String regEx_script = "<[//s]*?script[^>]*?>[//s//S]*?<[//s]*?///[//s]*?script[//s]*?>"; // 定义script的正则表达式{或<script>]*?>[/s/S]*?<//script>
// }
String regEx_style = "<[//s]*?style[^>]*?>[//s//S]*?<[//s]*?///[//s]*?style[//s]*?>"; // 定义style的正则表达式{或<style>]*?>[/s/S]*?<//style>
// }
String regEx_html = "<[^>]+>"; // 定义HTML标签的正则表达式
p_script = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE);
m_script = p_script.matcher(htmlStr);
htmlStr = m_script.replaceAll(""); // 过滤script标签
p_style = Pattern.compile(regEx_style, Pattern.CASE_INSENSITIVE);
m_style = p_style.matcher(htmlStr);
htmlStr = m_style.replaceAll(""); // 过滤style标签
p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);
m_html = p_html.matcher(htmlStr);
htmlStr = m_html.replaceAll(""); // 过滤html标签
textStr = htmlStr;
} catch (Exception e) {
System.err.println("Html2Text: " + e.getMessage());
}
return textStr;
}
}
struts中的html过滤
public static String filter(String value)
{
if(value == null || value.length() == 0)
return value;
StringBuffer result = null;
String filtered = null;
for(int i = 0; i < value.length(); i++)
{
filtered = null;
switch(value.charAt(i))
{
case 60: // '<'
filtered = "<";
break;
case 62: // '>'
filtered = ">";
break;
case 38: // '&'
filtered = "&";
break;
case 34: // '"'
filtered = """;
break;
case 39: // '/''
filtered = "'";
break;
}
if(result == null)
{
if(filtered != null)
{
result = new StringBuffer(value.length() + 50);
if(i > 0)
result.append(value.substring(0, i));
result.append(filtered);
}
} else
if(filtered == null)
result.append(value.charAt(i));
else
result.append(filtered);
}
return result != null ? result.toString() : value;
}
大家互相学习 哦
就是文本域内要是被人书写恶意的js 代码或者html的话
会对整个系统产生严重的影响
找了些资料
自己也正在学习中...
网上转载一篇相关文章
代码:
import java.util.regex.Pattern;
public class Test
{
public static void main(String[] args)
{
String ww="<html>sss<body>ss</body>ssss</html>";
String ff=html2Text(ww);
System.out.println(ff);
}
public static String html2Text(String inputString) {
String htmlStr = inputString; // 含html标签的字符串
String textStr = "";
java.util.regex.Pattern p_script;
java.util.regex.Matcher m_script;
java.util.regex.Pattern p_style;
java.util.regex.Matcher m_style;
java.util.regex.Pattern p_html;
java.util.regex.Matcher m_html;
try {
String regEx_script = "<[//s]*?script[^>]*?>[//s//S]*?<[//s]*?///[//s]*?script[//s]*?>"; // 定义script的正则表达式{或<script>]*?>[/s/S]*?<//script>
// }
String regEx_style = "<[//s]*?style[^>]*?>[//s//S]*?<[//s]*?///[//s]*?style[//s]*?>"; // 定义style的正则表达式{或<style>]*?>[/s/S]*?<//style>
// }
String regEx_html = "<[^>]+>"; // 定义HTML标签的正则表达式
p_script = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE);
m_script = p_script.matcher(htmlStr);
htmlStr = m_script.replaceAll(""); // 过滤script标签
p_style = Pattern.compile(regEx_style, Pattern.CASE_INSENSITIVE);
m_style = p_style.matcher(htmlStr);
htmlStr = m_style.replaceAll(""); // 过滤style标签
p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);
m_html = p_html.matcher(htmlStr);
htmlStr = m_html.replaceAll(""); // 过滤html标签
textStr = htmlStr;
} catch (Exception e) {
System.err.println("Html2Text: " + e.getMessage());
}
return textStr;
}
}
struts中的html过滤
public static String filter(String value)
{
if(value == null || value.length() == 0)
return value;
StringBuffer result = null;
String filtered = null;
for(int i = 0; i < value.length(); i++)
{
filtered = null;
switch(value.charAt(i))
{
case 60: // '<'
filtered = "<";
break;
case 62: // '>'
filtered = ">";
break;
case 38: // '&'
filtered = "&";
break;
case 34: // '"'
filtered = """;
break;
case 39: // '/''
filtered = "'";
break;
}
if(result == null)
{
if(filtered != null)
{
result = new StringBuffer(value.length() + 50);
if(i > 0)
result.append(value.substring(0, i));
result.append(filtered);
}
} else
if(filtered == null)
result.append(value.charAt(i));
else
result.append(filtered);
}
return result != null ? result.toString() : value;
}
大家互相学习 哦
相关文章推荐
- 过滤掉空格( /r/n) 和html标签
- ASP中过滤UBB和Html标签
- java过滤html标签函数
- Android Html 过滤标签
- js过滤(去除)富文本编辑器中的html标签和换行回车等标记的正则表达式
- 使用正则表达式过滤html标签
- PHP正则表达式过滤html标签属性(DEMO)
- 【转】利用 正则表达式 过滤掉 textarea ,textbox里的html标签
- java 过滤html标签方法
- Python使用正则表达式过滤或替换HTML标签的方法详解
- 过滤html标签
- asp.net正则表达式提取网页网址、标题、图片实例以及过滤所有HTML标签实例
- java_过滤HTML标签
- JAVA正则表达式过滤html标签
- JAVA过滤html标签的方法
- mysql中利用函数与过程过滤html标签
- php 过滤html标签的函数代码
- 用STRUTS2标签过滤html标签
- .NET过滤html标签
- asp.net过滤HTML标签的几个函数