• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

ASP去除HTML标记和JS去除HTML标记

JavaScript 开心洋葱 2879次浏览 0个评论

ASP去除HTML标记和JS去除HTML标记 

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

其他方法:

方法一   :   禁用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.  


方法三:使用IE或其他工具
有很多缺点:

#p#分页标题#e#

"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
以下的函数可以限制到具体的html标签
简介:  

要控制被删除的标签列表,可以通过向TAGLIST常数中添加/删除标记来实现.   例如,要保留所有的 <B> 标签,则从TAGLIST中删除B.   当前的列表包含了MSDN中的所有html标签以及   LAYER   标签.   每个标签要用 "; "括起来.  
开始标签和结束标签都会被删除,例如 " <A…> "和 </A…>  
若标签同时在   TAGLIST   和   BLOCKTAGLIST   常数中,则起始标签和结束标签之间的所有内容都会被删除  
没有结束标记的标签不被视为html标签,其内容不会被删除  
块标签若没有结尾标记,从此标签开始到文本结束的所有内容会被删除  
若 " <!– "后跟的字符不是空格,注释标签不会被删除  
使用这个函数很简单:  
strPlainText   =   RemoveHTML(strTextWithHTML)
函数内容如下:  

Function   RemoveHTML(   strText   )
        Dim   TAGLIST
        TAGLIST   =   ";!–;!DOCTYPE;A;ACRONYM;ADDRESS;APPLET;AREA;B;BASE;BASEFONT; "   &_
                            "BGSOUND;BIG;BLOCKQUOTE;BODY;BR;BUTTON;CAPTION;CENTER;CITE;CODE; "   &_
                            "COL;COLGROUP;COMMENT;DD;DEL;DFN;DIR;DIV;DL;DT;EM;EMBED;FIELDSET; "   &_
                            "FONT;FORM;FRAME;FRAMESET;HEAD;H1;H2;H3;H4;H5;H6;HR;HTML;I;IFRAME;IMG; "   &_
                            "INPUT;INS;ISINDEX;KBD;LABEL;LAYER;LAGEND;LI;LINK;LISTING;MAP;MARQUEE; "   &_
                            "MENU;META;NOBR;NOFRAMES;NOSCRIPT;OBJECT;OL;OPTION;P;PARAM;PLAINTEXT; "   &_
                            "PRE;Q;S;SAMP;SCRIPT;SELECT;SMALL;SPAN;STRIKE;STRONG;STYLE;SUB;SUP; "   &_
                            "TABLE;TBODY;TD;TEXTAREA;TFOOT;TH;THEAD;TITLE;TR;TT;U;UL;VAR;WBR;XMP; "

        Const   BLOCKTAGLIST   =   ";APPLET;EMBED;FRAMESET;HEAD;NOFRAMES;NOSCRIPT;OBJECT;SCRIPT;STYLE; "
       
        Dim   nPos1
        Dim   nPos2
        Dim   nPos3
        Dim   strResult
        Dim   strTagName#p#分页标题#e#
        Dim   bRemove
        Dim   bSearchForBlock
       
        nPos1   =   InStr(strText,   " < ")
        Do   While   nPos1   >   0
                nPos2   =   InStr(nPos1   +   1,   strText,   "> ")
                If   nPos2   >   0   Then
                        strTagName   =   Mid(strText,   nPos1   +   1,   nPos2   –   nPos1   –   1)
        strTagName   =   Replace(Replace(strTagName,   vbCr,   "   "),   vbLf,   "   ")

                        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#p#分页标题#e#
                                                nPos2   =   Len(strText)
                                                nPos3   =   InStr(nPos1   +   1,   strText,   " </ "   &   strTagName,   vbTextCompare)
                                                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)#p#分页标题#e#
                        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


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明ASP去除HTML标记和JS去除HTML标记
喜欢 (0)

您必须 登录 才能发表评论!

加载中……