asp如何去除html标记

2016-05-04 15:59:48 9669

方法一 : 禁用HTML

最简单的方法是直接禁用html标签而不用移除它们. 可以使用replace()函数. 例如:

strText = replace(strText, "这样做虽然很安全,但显得不够友好.(用户提交的文本会变得难以阅读)  



方法二: 使用"<"和">"

怎样使得html标签从文本中消失呢? 我们可以去掉"<"和">"中间的所有内容 

在JavaScript中这很简单: 

function RemoveHTML( strText )

{

    var regEx = /<[^>]*>/g;

    return strText.replace(regEx, "");

}

现在回到VBScript, 对于Scripting引擎5.0或更高版本(可以通过调用ScriptEngineMajorVersion和ScriptEngineMinorVersion函数来检验版本),我们也可以使用RegExp物体: 

Function RemoveHTML( strText )

    Dim RegEx

    Set RegEx = New RegExp

    RegEx.Pattern = "<[^>]*>"

    RegEx.Global = True

    RemoveHTML = RegEx.replace(strText, "")

End Function

若不用正则表达式,下面的函数可以达到同样的目的: 

Function RemoveHTML( strText ) 

    Dim nPos1

    Dim nPos2     

    nPos1 = InStr(strText, "<") 

    Do While nPos1 > 0 

        nPos2 = InStr(nPos1 + 1, strText, ">") 

        If nPos2 > 0 Then 

            strText = left(strText, nPos1 - 1) & Mid(strText, nPos2 + 1) 

        Else 

            Exit Do 

        End If 

        nPos1 = InStr(strText, "<") 

    Loop 

    

    RemoveHTML = strText 

End Function 

以上的方法虽然都可以去掉括号内的html标签,但是这些方法都存在以下问题: 

首先,文本内的任何不表示html?尖括号会被去除.而且两个尖括号中间的文本也会被删掉.换句话说,在文本中插入任何"<"或">"都会出现不可预料的结果.

另外,这种方法不能控制删除哪些html标签.比如这些无害的标签通常是允许的. 



方法三:使用IE或其他工具

有很多缺点:

"It may be desirable to parse HTML files inside a Web server process in response to a browser page request. However, the WebBrowser control, DHTML Editing Control, MSHTML, and other Internet Explorer components may not function properly in an Active Server Pages (ASP) page or other application run in a Web server application." (http://www.landui.com/support/kb/articles/Q244/0/85.ASP?LN=EN-US&SD=gn&FR=0) 

方法四:VBScript

以下的函数可以限制到具体的html标签

简介: 

要控制被删除的标签列表,可以通过向TAGLIST常数中添加/删除标记来实现. 例如,要保留所有的标签,则从TAGLIST中删除B. 当前的列表包含了MSDN中的所有html标签以及 LAYER 标签. 每个标签要用";"括起来.

开始标签和结束标签都会被删除,例如""和 

若标签同时在 TAGLIST 和 BLOCKTAGLIST 常数中,则起始标签和结束标签之间的所有内容都会被删除 

没有结束标记的标签不被视为html标签,其内容不会被删除 

块标签若没有结尾标记,从此标签开始到文本结束的所有内容会被删除 

若"


            nPos3 = InStr(strTagName, " ")

            If nPos3 > 0 Then

                strTagName = left(strTagName, nPos3 - 1)

            End If

If left(strTagName, 1) = "/" Then

                strTagName = Mid(strTagName, 2)

                bSearchForBlock = False

            Else

                bSearchForBlock = True

            End If

            

            If InStr(1, TAGLIST, ";" & strTagName & ";", vbTextCompare) > 0 Then

                bRemove = True

                If bSearchForBlock Then

                    If InStr(1, BLOCKTAGLIST, ";" & strTagName & ";", vbTextCompare) > 0 Then

                        nPos2 = Len(strText)

                        nPos3 = InStr(nPos1 + 1, strText, "                        If nPos3 > 0 Then

                            nPos3 = InStr(nPos3 + 1, strText, ">")

                        End If

                        

                        If nPos3 > 0 Then

                            nPos2 = nPos3

                        End If

                    End If

                End If

            Else

bRemove = False

            End If

            

            If bRemove Then

                strResult = strResult & left(strText, nPos1 - 1)

                strText = Mid(strText, nPos2 + 1)

            Else

                strResult = strResult & left(strText, nPos1)

                strText = Mid(strText, nPos1 + 1)

            End If

        Else

            strResult = strResult & strText

            strText = ""

        End If

        

        nPos1 = InStr(strText, "<")

    Loop

    strResult = strResult & strText

    

    RemoveHTML = strResult

End Function




提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: