字符串过滤时间极少,主要的时间都在xmlget上

<link href="baidu.css" rel="stylesheet" type="text/css">
<%
sub main()
   t5
=timer
   
Dim xmlhttp
   
set xmlhttp=Server.CreateObject("Msxml2.xmlhttp")
   url
="http://www.baidu.com/"
   param=getrequest()
   param
=replace(param,"keyword","wd")
   
if param="" then
      param
="baidu?wd=word"
   else
      url
=url&"s?"
   end if
   url
=url&param
   ww url
   xmlhttp.open 
"get",url,false
   xmlhttp.send    
   d
=xmlhttp.ResponseBody
   t6
=timer
   ww 
"xmlget costs:"&t6-t5
   d
=cut(d)
   ww 
"strclean costs:"&timer-t6
   wb d 

   
set xmlhttp=nothing
   d
=""
end sub

call main

'此函数实现对byte类型操作
function replaceb(str,find,replacewith)
   positiona
=1
   i
=0
   
while instrb(positiona,str,find)      
      positiona
=instrb(positiona,str,find)
         strleft
=leftb(str,positiona-1)
         strRight
=rightb(str,lenb(str)-positiona-lenb(find)+1)
         str
=strleft&replacewith&strRight
      i
=i+1
      
if i>60 then
         
exit function
      
end if
   
wend
   replaceb
=str
end function
'过滤主过程
function cut(info)

   info
=replaceb(info,str2bytes("href=s"),str2bytes("href=xml.asp"))
   info
=replaceb(info,str2bytes("<font size=-1>"),str2bytes(" "))
   
   stra
=cutit("<ol>","</ol>",info,5)
   strpage
=cutit("<br clear=all><ol>","</ol>",info,5)
   cut
=stra&strpage
end function
'过滤子过程,具体实现
function cutit(cutstart,cutend,ysStr,offset)

   st
=str2bytes(cutstart)
   et
=str2bytes(cutend)
   s
=instrb(1,ysstr,st)
   t
=instrb(s,ysstr,et)
   cutit
=midb(ysstr,s,t-s+offset)
   
end function
'组合递交的参数
function getrequest()
   
for each r in request.querystring
         tmp
=tmp&r&"="&request(r)&"&"
   next
   getrequest
=tmp
end function
'将双字节变量化为单字节,与byte类型合用。
function str2bytes(str)   
   
for i=1 to lenb(str)
         temp
=temp&midb(str,i,1)
         i
=i+1
   
next
   str2bytes
=temp
end function

'此过程将byte类型转为字串,耗时太长
Function bytes2BSTR(vIn)

    
Dim strReturn,i,ThisCharCode,innerCode,Hight8,Low8,NextCharCode
    strReturn 
= ""
    
    
For i = 1 To LenB(vIn)
        ThisCharCode 
= AscB(MidB(vIn,i,1))
        
If ThisCharCode < &H80 Then
            strReturn 
= strReturn & Chr(ThisCharCode)
        
Else
            NextCharCode 
= AscB(MidB(vIn,i+1,1))
            strReturn 
= strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
            i 
= i + 1
        
End If
    
Next
    
    bytes2BSTR 
= strReturn
    
End Function

sub ww(t)
   response.write t
   
'response.write "<BR>"
   response.flush
end sub

sub wb(t)
   response.binarywrite t
   
'response.write "<BR>"
   response.flush
end sub
%
>
Posted on 2005-03-28 22:13  古代  阅读(1290)  评论(3)    收藏  举报