网络编程
位置:首页>> 网络编程>> Asp编程>> 高效的删除HTML标签的函数

高效的删除HTML标签的函数

作者:Fris 来源:Fris's Blog 发布时间:2009-02-26 13:02:00 

标签:标签,html,函数,正则表达式,删除

这里提供三种方法:

1,使用正则表达式

Function regKillHTML(str) 
     dim re,s 
     s=str 
     set re = New RegExp 
     re.Global = True 
     re.IgnoreCase = True 
     re.Pattern="\<(.+?)\>" 
     s=re.Replace(s,"") 
     regKillHTML=s 
     Set Re = Nothing 
End Function 

2,逐步分析


Function KillHTMLLabel(str) 
Dim n,m,str2 
m = 0 
n = inStr(str,"<") 
if n > 0 Then m = inStr(n,str,">") 
str2 = str 
Do while n > 0 and n < m 
  str2 = Left(str2,n-1) & Mid(str2,m+1) 
  n = inStr(str2,"<") 
  if n > 0 Then m = inStr(n,str2,">") 
Loop 
KillHTMLLabel = str2 
End Function 

3,使用split和join函数


Function killHtml(str)'by Fris @ 10:20 2009-2-19 www.by159.com 
If inStr(str,"<")=0 Then killHtml=str : Exit Function 
Dim Temp,i,j 
Temp=Split(str,"<") 
For i=1 to Ubound(Temp) 
  j=Instr(Temp(i),">") 
  If j>0 Then Temp(i)=Mid(Temp(i),j+1) Else Temp(i)="<"&Temp(i) End If 
Next 
killHtml=join(Temp,"") 
End Function 

以上三种方法都或多或少的存在一定的问题,可以看看下面特意构造的字符串来的处理结果.
想比较而言,第三种方法无论在效率和效果上,都较前两种方法更优,如果处理比较大的字符串,优势更加明显.

现在给出一个特意构造的字符串:

"最近看了<b>曹雪芹</b>的一部小说<<<a href=""mybook.zip"">红楼梦</a>>>(又名<<a href=""mybook.zip"">石头记</a>><b><font color=red><<<<<<</font>点击书名可以下载</b>),这部<<红楼梦>>讲述的是清末的故事." 

处理结果如下:

期望结果:  最近看了曹雪芹的一部小说<<红楼梦>>(又名<石头记><<<<<<点击书名可以下载),这部<<红楼梦>>讲述的是清末的故事.

方法1结果: 最近看了曹雪芹的一部小说红楼梦>>(又名石头记>点击书名可以下载),这部>讲述的是清末的故事.

方法2结果: 最近看了曹雪芹的一部小说红楼梦>>(又名石头记>点击书名可以下载),这部>讲述的是清末的故事.

方法3结果: 最近看了曹雪芹的一部小说<<红楼梦>>(又名<石头记><<<<<<点击书名可以下载),这部<>讲述的是清末的故事.

从上面的例子可以看出第三种方法处理的结果更加接近预期结果.

至于效率上,众所周知,拼接字符串效率比较低下,这里就不进行测试了.

 

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com