当前位置:asp编程网>技术教程>Asp教程>  正文

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

2011-09-20 08:43:54   来源:asp编程网    作者:wangsdong   浏览量:2296   收藏

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



关于我们-广告合作-联系我们-积分规则-网站地图

Copyright(C)2013-2017版权所属asp编程网