站内搜索
广告
移除HTML标签
作者:    来源:    点击:    日期:2007-5-19 0:22:52   

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

strText = Replace(strText, "<script", "&lt;script", 1, -1, 1)

或者直接禁用所有的html:
strText = Replace(strText, "<", "&lt;")

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

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

在JavaScript中这很简单:

function RemoveHTML( strText )
{
 var regEx = /<[^>]*>/g;
 return strText.replace(regEx, "");
}

关于正则表达式可以参考: http://developer.netscape.com/docs/manuals/js/client/jsguide/regexp.htm.

现在回到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标签.比如<b><i>这些无害的标签通常是允许的.

方法三:使用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://support.microsoft.com/support/kb/articles/Q244/0/85.ASP?LN=EN-US&SD=gn&FR=0)

 

方法四:VBScript

首页 上一页 [1] [2] [3]  下一页 尾页 
移除HTML标签 评论