经常会遇到这样的麻烦,客户在复制word中的内容到编辑器中,会发现有许多多余的代码,又不能直接使用remove函数将所有的格式去掉,因为里面有表格。所以想使用一个函数即可过滤不想要的内容,但又要保留下我想要的表格等内容。
<%
================================================
显示解释函数,返回根据参数允许显示的格式字符串,具体调用方法可从后台管理获得
输入参数:
s_Content : 要转换的数据字符串
sFilters: 要过滤掉的格式集,用逗号分隔多个
================================================
Function strFilter(s_Content, sFilters)
Dim a_Filter, i, s_Result, s_Filters
strFilter = s_Content
If IsNull(s_Content) Then Exit Function
If s_Content = Then Exit Function
s_Result = s_Content
s_Filters = sFilters
设置默认过滤
If sFilters = Then s_Filters = script,object
a_Filter = Split(s_Filters, ,)
For i = 0 To UBound(a_Filter)
s_Result = strFilterDecode(s_Result, a_Filter(i))
Next
strFilter = s_Result
End Function
%>
<Script Language=JavaScript RunAt=Server>
//===============================================
// 单个过滤
// 输入参数:
// s_Content : 要转换的数据字符串
// s_Filter : 要过滤掉的单个格式
//===============================================
function strFilterDecode(html, filter){
switch(filter.toUpperCase()){
case SCRIPT: // 去除所有客户端脚本javascipt,vbscript,jscript,js,vbs,event,...
html = strExecReg(</?script[>]*>, , html);
html = strExecReg((javascript|jscript|vbscript|vbs):, $1:, html);
html = strExecReg(on(mouse|exit|error|click|key), <I>on$1</I>, html);
html = strExecReg(&#, <I>&#</I>, html);
break;
case TABLE: // 去除表格<table><tr><td><th>
html = strExecReg(</?table[>]*>, , html);
html = strExecReg(</?tr[>]*>, , html);
html = strExecReg(</?th[>]*>, , html);
html = strExecReg(</?td[>]*>, , html);
break;
case CLASS: // 去除样式类class=
html = strExecReg((<[>]) class=[ |>]*([>]*>), $1 $2, html) ;
break;
case STYLE: // 去除样式style=
html = strExecReg((<[>]) style=\[\]*\([>]*>), $1 $2, html);
break;
case XML: // 去除XML<?xml>
html = strExecReg(<\\?xml[>]*>, , html);
break;
case NAMESPACE: // 去除命名空间<o:p></o:p>
html = strExecReg(<\/?[a-z]:[>]*>, , html);
break;
case FONT: // 去除字体<font></font>
html = strExecReg(</?font[>]*>, , html);
break;
case MARQUEE: // 去除字幕<marquee></marquee>
html = strExecReg(</?marquee[>]*>, , html);
break;
case OBJECT: // 去除对象<object><param><embed></object>
html = strExecReg(</?object[>]*>, , html);
html = strExecReg(</?param[>]*>, , html);
html = strExecReg(</?embed[>]*>, , html);
break;
case IFRAME: // 去除框架<iframe></iframe>
html = strExecReg(</?iframe[>]*>, , html);
break;
default:
}
return html;
}
// ============================================
// 执行正则表达式替换
// ============================================
function strExecReg(re, rp, content) {
oReg = new RegExp(re, ig);
var r = content.replace(oReg, rp);
return r;
}
</script>
注意这里的<Script Language=JavaScript RunAt=Server>说明这个js只允许在服务器端运行,客户端是看不到
Function strFilter(s_Content, sFilters)函数中的参数是自己想要过滤的内容,具体值在下面的js函数中的case,大家根据自己的需要传入参数。