当前位置: 首页 > 图文教程 > 网络编程 > ASP > asp实现关键词获取(各搜索引擎,gb2312及utf-8)

ASP
asp实现取得数组中的最大值的代码
asp 将日期格式化为需要的格式
asp 下产生任意位数随机密码的代码
asp下返回以千分位显示数字格式化的数值
asp重定向页面的方法总结
asp下去除数组中重复的项的方法
asp下实现 重新排序数字数组的代码
asp 验证输入网址是否有效并可以访问 与正则验证输入网址
asp验证Ip格式的函数
asp实现生成由数字,大写字母,小写字母指定位数的随机数
asp 格式化sql中的like字符串
asp 实现显示所有的服务器变量值的函数
asp 取得用户真实IP,对代理地址仍然有效的函数
asp 通用数据库连接过程函数
asp 字符串截取函数
asp下实现格式化文件大小以MB显示的函数
asp 下用正则表达式检测邮箱格式的函数
asp 实现检测字符串是否为纯字母和数字组合的函数
asp代码实现检测组件是否安装的函数
asp通过JMAIL实现通用发送函数

ASP 中的 asp实现关键词获取(各搜索引擎,gb2312及utf-8)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 167 ::
收藏到网摘: n/a

 

不知道为什么现在各大搜索引擎编码居然不一样.当然不是gb2312就是utf-8了.编码问题是比较头疼的问题...头疼的不要命...

我们获得关键词,一般是通过来访页面的url进行分析的.比如

http://www.google.com/search?hl=zh-CN&q=%E5%AD%A4%E7%8B%AC&lr=

各位肯定知道这个是通过urlencode编码的.

我们得到其中的信息,需要进行2步.第一步是进行urldecode,在我们普通参数活得的时候,这个是由asp自己来进行的,但是现在我们不得不进行手工解码.

网上函数很多,但都是针对于gb2312页面解gb2312.utf-8的.对于这个,我们可以很轻松的先进行解码,然后根据搜索引擎判断它的编码,如果是utf-8就再转换为gb2312.

但是由于我的网站是utf-8页面的.而utf-8页面我找到的只有解utf-8字符的urldecode编码的.在这里停顿了很久,最后我只能用最糟糕的方法,把拆分出来的关键词用xmlhttp提交到一个gb2312的asp页面,然后活得乱码(gb2312)后再进行gb2312 to utf-8的转换.

下面主要实现代码.

Public Function GetSearchKeyword(RefererUrl) '搜索关键词
 if RefererUrl="" or len(RefererUrl)<1 then exit function
   
  on error resume next
 
  Dim re
  Set re = New RegExp
  re.IgnoreCase = True
  re.Global = True
  Dim a,b,j
  '模糊查找关键词,此方法速度较快,范围也较大
  re.Pattern = "(word=([^&]*)|q=([^&]*)|p=([^&]*)|query=([^&]*)|name=([^&]*)|_searchkey=([^&]*)|baidu.*?w=([^&]*))"
  Set a = re.Execute(RefererUrl)
  If a.Count>0 then
   Set b = a(a.Count-1).SubMatches
   For j=1 to b.Count
    If Len(b(j))>0 then
     if instr(1,RefererUrl,"google",1) then
       GetSearchKeyword=Trim(U8Decode(b(j)))
      elseif instr(1,refererurl,"yahoo",1) then
       GetSearchKeyword=Trim(U8Decode(b(j)))
      elseif instr(1,refererurl,"yisou",1) then
       GetSearchKeyword=Trim(getkey(b(j)))
      elseif instr(1,refererurl,"3721",1) then
       GetSearchKeyword=Trim(getkey(b(j)))
      else
       GetSearchKeyword=Trim(getkey(b(j)))
     end if
     Exit Function
    end if
   Next
  End If
  if err then
  err.clear
  GetSearchKeyword = RefererUrl
  else
  GetSearchKeyword = "" 
  end if 
 End Function


 Function URLEncoding(vstrIn)
  dim strReturn,i,thischr
    strReturn = ""
    For i = 1 To Len(vstrIn)
        ThisChr = Mid(vStrIn,i,1)
        If Abs(Asc(ThisChr)) < &HFF Then
            strReturn = strReturn & ThisChr
        Else
            innerCode = Asc(ThisChr)
            If innerCode < 0 Then
                innerCode = innerCode + &H10000
            End If
            Hight8 = (innerCode  And &HFF00)\ &HFF
            Low8 = innerCode And &HFF
            strReturn = strReturn & "%" & Hex(Hight8) &  "%" & Hex(Low8)
        End If
    Next
    URLEncoding = strReturn
End Function
function getkey(key)
dim oReq
set oReq = CreateObject("MSXML2.XMLH