过滤EWEBEDITOR编辑器中的HTML代码

曾经用过EWEBEDITOR编辑器,非常好用。把这个功能给提取出来了。偶尔需要。
<%
'================================================
' 显示解释函数,返回根据参数允许显示的格式字符串,具体调用方法可从后台管理获得
' 输入参数:
'    s_Content    :    要转换的数据字符串
'    s_Filters    :    要过滤掉的格式集,用逗号分隔多个
'================================================
Function eWebEditor_DeCode(s_Content, sFilters)
    Dim a_Filter, i, s_Result, s_Filters
    eWebEditor_Decode=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=eWebEditor_DecodeFilter(s_Result, a_Filter(i))
    Next
    eWebEditor_DeCode=s_Result
End Function

%>

<Script Language=JavaScript RunAt=Server>
//===============================================
// 单个过滤
// 输入参数:
//    s_Content    :    要转换的数据字符串
//    s_Filter    :    要过滤掉的单个格式
//===============================================
function eWebEditor_DecodeFilter(html, filter){
    switch(filter.toUpperCase()){
    case "SCRIPT":        // 去除所有客户端脚本javascipt,vbscript,jscript,js,vbs,event,...
        html=eWebEditor_execRE("</?script[^>]*>", "", html);
        html=eWebEditor_execRE("(javascript|jscript|vbscript|vbs):", "$1:", html);
        html=eWebEditor_execRE("on(mouse|exit|error|click|key)", "<I>on$1</I>", html);
    //    html=eWebEditor_execRE("&#", "<I>&#</I>", html);
        break;
    case "TABLE":        // 去除表格<table><tr><td><th>
        html=eWebEditor_execRE("</?table[^>]*>", "", html);
        html=eWebEditor_execRE("</?tr[^>]*>", "", html);
        html=eWebEditor_execRE("</?th[^>]*>", "", html);
        html=eWebEditor_execRE("</?td[^>]*>", "", html);
        html=eWebEditor_execRE("</?tbody[^>]*>", "", html);
        break;
    case "CLASS":        // 去除样式类class=""
        html=eWebEditor_execRE("(<[^>]+) class=[^ |^>]*([^>]*>)", "$1 $2", html) ;
        break;
    case "WIDTH":        // 去除样式类class=""
        html=eWebEditor_execRE("(<[^>]+) width=[^ |^>]*([^>]*>)", "$1 $2", html) ;
        break;
    case "STYLE":        // 去除样式style=""
        html=eWebEditor_execRE("(<[^>]+) style=\"[^\"]*\"([^>]*>)", "$1 $2", html);
        break;
    case "XML":            // 去除XML<?xml>
        html=eWebEditor_execRE("<\\?xml[^>]*>", "", html);
        break;
    case "NAMESPACE":    // 去除命名空间<o:p></o:p>
        html=eWebEditor_execRE("<\/?[a-z]+:[^>]*>", "", html);
        break;
    case "IFRAME":    // 去除框架<IFRAME>
        html=eWebEditor_execRE("</?IFRAME[^>]*>", "", html);
        break;
    case "FONT":        // 去除字体<font></font>
        html=eWebEditor_execRE("</?font[^>]*>", "", html);
        html=eWebEditor_execRE("</?strong[^>]*>", "", html);
        html=eWebEditor_execRE("</?u[^>]*>", "", html);
        break;
    case "IMG":        // 去除图片<img>
        html=eWebEditor_execRE("</?img[^>]*>", "", html);
        break;
    case "B":        // 去除图片<img>
        html=eWebEditor_execRE("</?b[^>]*>", "", html);
        break;
    case "P":        // 去除图片<img>
        html=eWebEditor_execRE("</?p[^>]*>", "", html);
        break;
    case "MARQUEE":        // 去除字幕<marquee></marquee>
        html=eWebEditor_execRE("</?marquee[^>]*>", "", html);
        break;
    case "SPAN":        // 去除字幕<SPAN></SPAN>
        html=eWebEditor_execRE("</?span[^>]*>", "", html);
        break;
    case "DIV":        // 去除<div></div>
        html=eWebEditor_execRE("</?div[^>]*>", "", html);
        break;
    case "OBJECT":        // 去除对象<object><param><embed></object>
        html=eWebEditor_execRE("</?object[^>]*>", "", html);
        html=eWebEditor_execRE("</?param[^>]*>", "", html);
        html=eWebEditor_execRE("</?embed[^>]*>", "", html);
        break;
    default:
    }
    return html;
}

//============================================
// 执行正则表达式替换
//============================================
function eWebEditor_execRE(re, rp, content) {
    oreg=new RegExp(re, "ig");
    r=content.replace(oReg, rp);
    return r;
}

</Script>


上一篇: 收集到的一些正则表达式
下一篇: 原来最新也并非最好
文章来自:
引用通告: 查看所有引用 | 我要引用此文章
Tags: 过滤 EWEBEDITOR
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 支持Gravatar头像.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.