当前位置:K88软件开发文章中心编程语言AspAsp01 → 文章内容

在服务器端使用JS过滤编辑器中的多余的代码

减小字体 增大字体 作者:wangsdong     来源:asp编程网  发布时间:2018-12-30 8:33:30

经常会遇到这样的麻烦,客户在复制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,大家根据自己的需要传入参数。



在服务器端使用JS过滤编辑器中的多余的代码