using System;
using System.Web;
/// <summary>
/// GetKeyword 的摘要说明。
/// </summary>
public class GetKeyword
{
public string keywd;
byte[] array = new byte[2];
public GetKeyword()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
//将数组中字符连接起来
public string joinstr(string[] str)
{
string returnstr = "";
for(int i = 0 ; i < str.Length; i++)
{
if(str[i] != null)
{
returnstr += str[i];
}
else
{
break;
}
}
return returnstr;
}
/// 将字符串string转化为16进制数(由于不知道用什么系统函数好,暂且这么转)
/// 一个汉字由两个16进制数组成,如:"阿" = B0A1,调用一次本函数可以将B0转成byte格式,因此left存储B,right存储0
/// <returns>byte表示这个</returns>
public byte strTo16(string left,string right)
{
byte b = (byte)0;
int sum;
int intleft;
int intright;
//左边的字符B
switch(left)
{
case "A":
intleft = 10*16;
break;
case "B":
intleft = 11*16;
break;
case "C":
intleft = 12*16;
break;
case "D":
intleft = 13*16;
break;
case "E":
intleft = 14*16;
break;
case "F":
intleft = 15*16;
break;
default:
intleft = int.Parse(left)*16;
break;
}
//右边的字符0
switch(right)
{
case "A":
intright = 10;
break;
case "B":
intright = 11;
break;
case "C":
intright = 12;
break;
case "D":
intright = 13;
break;
case "E":
intright = 14;
break;
case "F":
intright = 15;
break;
default:
intright = int.Parse(right);
break;
}
//每一个byte是左右字符的总和
sum = intleft + intright;
b = (byte)sum;
return b;
}
//将utf8编码的url解析成关键字数组
public string[] ANSIKey(string url,string finwd)
{
string[] key = new string[10];
//wd开头为关键字
int index_Begin = url.IndexOf(finwd);
//"wd="这三位长度
int length = finwd.Length;
int i = 0;
if(index_Begin != -1)
{
//从wd=后面,1位长度,找%是否存在
int index_percent = url.Substring(index_Begin + length, 1).IndexOf("%");
//从wd=后面,所有长度,找&是否存在
int index_And = url.Substring(index_Begin + length).IndexOf("&");
//Loop,循环到找到的index_And=0,即&前没有任何关键字
while(index_And != 0)
{
//紧跟着%
if(index_percent == 0)
{
string left1 = url.Substring(index_Begin + length + 1).Substring(0, 1);
string right1 = url.Substring(index_Begin + length + 2).Substring(0, 1);
string left2 = url.Substring(index_Begin + length + 4).Substring(0, 1);
string right2 = url.Substring(index_Begin + length + 5).Substring(0, 1);
array[0] = strTo16(left1,right1);
array[1] = strTo16(left2,right2);
key[i] = System.Text.Encoding.Default.GetString(array);
//%B0%A1 6位长度
length += 6;
}
//中间夹杂着非中文
else if(index_percent > 0)
{
int index_end = url.Substring(index_Begin + length).IndexOf("%");
key[i] = url.Substring(index_Begin + length).Substring(0,index_end);
//这个%与下一个%之间的长度
length += index_end;
}
//没有%了
else
{
key[i] = url.Substring(index_Begin + length).Substring(0,index_And);
//读到结尾
length += index_And;
}
i++;
//获得1个key之后,从后面位置继续寻找%
index_percent = url.Substring(index_Begin + length).IndexOf("%");
//获得1个key之后,从后面位置继续寻找&(结束标记)
index_And = url.Substring(index_Begin + length).IndexOf("&");
//因为163搜索比较特殊,他的关键词串没有&结束符,所以只能程序判断%读完后手动结束
if(url.IndexOf("163") != -1)
{
if(index_percent == -1)
{
index_And = 0;
}
}
}
}
return key;
}
//关键字系统函数解析
public string key(string url)
{
string[] key = new string[100];
string returnkey = "";
//google utf8格式
if(url.IndexOf("google") != -1)
{
int index_Begin = url.IndexOf("q=");
if(index_Begin != -1)
{
int index_End = url.Substring(index_Begin).IndexOf("&");
if(index_End != -1)
{
returnkey = url.Substring(index_Begin+2,index_End-2);
}
}
//解码
returnkey = HttpContext.Current.Server.UrlDecode(returnkey);
return returnkey;
}
//yahooutf8格式
else if(url.IndexOf("yahoo") != -1)
{
int index_Begin = url.IndexOf("&p=");
if(index_Begin != -1)
{
int index_End = url.Substring(index_Begin).IndexOf("&");
if(index_End != -1)
{
returnkey = url.Substring(index_Begin+2,index_End-2);
}
//解码
returnkey = HttpContext.Current.Server.UrlDecode(returnkey);
}
return returnkey;
}
//baidu
else if(url.IndexOf("baidu") != -1)
{
key = ANSIKey(url,"wd=");
returnkey = joinstr(key);
return returnkey;
}
//3721
else if(url.IndexOf("3721") != -1)
{
key = ANSIKey(url,"p=");
returnkey = joinstr(key);
return returnkey;
}
//sina
else if(url.IndexOf("search.iask") != -1)
{
key = ANSIKey(url,"_searchkey=");
returnkey = joinstr(key);
return returnkey;
}
//sohu
else if(url.IndexOf("sogou") != -1)
{
key = ANSIKey(url,"query=");
returnkey = joinstr(key);
return returnkey;
}
//163
else if(url.IndexOf("163") != -1)
{
key = ANSIKey(url,"q=");
returnkey = joinstr(key);
return returnkey;
}
//中搜 soso
else if(url.IndexOf("zhongsou") != -1||url.IndexOf("soso") != -1)
{
key = ANSIKey(url,"w=");
returnkey = joinstr(key);
return returnkey;
}
//TOM
else if(url.IndexOf("tom") != -1)
{
key = ANSIKey(url,"word=");
returnkey = joinstr(key);
return returnkey;
}
else
{
return returnkey;
}
}
}
using System.Web;
/// <summary>
/// GetKeyword 的摘要说明。
/// </summary>
public class GetKeyword
{
public string keywd;
byte[] array = new byte[2];
public GetKeyword()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
//将数组中字符连接起来
public string joinstr(string[] str)
{
string returnstr = "";
for(int i = 0 ; i < str.Length; i++)
{
if(str[i] != null)
{
returnstr += str[i];
}
else
{
break;
}
}
return returnstr;
}
/// 将字符串string转化为16进制数(由于不知道用什么系统函数好,暂且这么转)
/// 一个汉字由两个16进制数组成,如:"阿" = B0A1,调用一次本函数可以将B0转成byte格式,因此left存储B,right存储0
/// <returns>byte表示这个</returns>
public byte strTo16(string left,string right)
{
byte b = (byte)0;
int sum;
int intleft;
int intright;
//左边的字符B
switch(left)
{
case "A":
intleft = 10*16;
break;
case "B":
intleft = 11*16;
break;
case "C":
intleft = 12*16;
break;
case "D":
intleft = 13*16;
break;
case "E":
intleft = 14*16;
break;
case "F":
intleft = 15*16;
break;
default:
intleft = int.Parse(left)*16;
break;
}
//右边的字符0
switch(right)
{
case "A":
intright = 10;
break;
case "B":
intright = 11;
break;
case "C":
intright = 12;
break;
case "D":
intright = 13;
break;
case "E":
intright = 14;
break;
case "F":
intright = 15;
break;
default:
intright = int.Parse(right);
break;
}
//每一个byte是左右字符的总和
sum = intleft + intright;
b = (byte)sum;
return b;
}
//将utf8编码的url解析成关键字数组
public string[] ANSIKey(string url,string finwd)
{
string[] key = new string[10];
//wd开头为关键字
int index_Begin = url.IndexOf(finwd);
//"wd="这三位长度
int length = finwd.Length;
int i = 0;
if(index_Begin != -1)
{
//从wd=后面,1位长度,找%是否存在
int index_percent = url.Substring(index_Begin + length, 1).IndexOf("%");
//从wd=后面,所有长度,找&是否存在
int index_And = url.Substring(index_Begin + length).IndexOf("&");
//Loop,循环到找到的index_And=0,即&前没有任何关键字
while(index_And != 0)
{
//紧跟着%
if(index_percent == 0)
{
string left1 = url.Substring(index_Begin + length + 1).Substring(0, 1);
string right1 = url.Substring(index_Begin + length + 2).Substring(0, 1);
string left2 = url.Substring(index_Begin + length + 4).Substring(0, 1);
string right2 = url.Substring(index_Begin + length + 5).Substring(0, 1);
array[0] = strTo16(left1,right1);
array[1] = strTo16(left2,right2);
key[i] = System.Text.Encoding.Default.GetString(array);
//%B0%A1 6位长度
length += 6;
}
//中间夹杂着非中文
else if(index_percent > 0)
{
int index_end = url.Substring(index_Begin + length).IndexOf("%");
key[i] = url.Substring(index_Begin + length).Substring(0,index_end);
//这个%与下一个%之间的长度
length += index_end;
}
//没有%了
else
{
key[i] = url.Substring(index_Begin + length).Substring(0,index_And);
//读到结尾
length += index_And;
}
i++;
//获得1个key之后,从后面位置继续寻找%
index_percent = url.Substring(index_Begin + length).IndexOf("%");
//获得1个key之后,从后面位置继续寻找&(结束标记)
index_And = url.Substring(index_Begin + length).IndexOf("&");
//因为163搜索比较特殊,他的关键词串没有&结束符,所以只能程序判断%读完后手动结束
if(url.IndexOf("163") != -1)
{
if(index_percent == -1)
{
index_And = 0;
}
}
}
}
return key;
}
//关键字系统函数解析
public string key(string url)
{
string[] key = new string[100];
string returnkey = "";
//google utf8格式
if(url.IndexOf("google") != -1)
{
int index_Begin = url.IndexOf("q=");
if(index_Begin != -1)
{
int index_End = url.Substring(index_Begin).IndexOf("&");
if(index_End != -1)
{
returnkey = url.Substring(index_Begin+2,index_End-2);
}
}
//解码
returnkey = HttpContext.Current.Server.UrlDecode(returnkey);
return returnkey;
}
//yahooutf8格式
else if(url.IndexOf("yahoo") != -1)
{
int index_Begin = url.IndexOf("&p=");
if(index_Begin != -1)
{
int index_End = url.Substring(index_Begin).IndexOf("&");
if(index_End != -1)
{
returnkey = url.Substring(index_Begin+2,index_End-2);
}
//解码
returnkey = HttpContext.Current.Server.UrlDecode(returnkey);
}
return returnkey;
}
//baidu
else if(url.IndexOf("baidu") != -1)
{
key = ANSIKey(url,"wd=");
returnkey = joinstr(key);
return returnkey;
}
//3721
else if(url.IndexOf("3721") != -1)
{
key = ANSIKey(url,"p=");
returnkey = joinstr(key);
return returnkey;
}
//sina
else if(url.IndexOf("search.iask") != -1)
{
key = ANSIKey(url,"_searchkey=");
returnkey = joinstr(key);
return returnkey;
}
//sohu
else if(url.IndexOf("sogou") != -1)
{
key = ANSIKey(url,"query=");
returnkey = joinstr(key);
return returnkey;
}
//163
else if(url.IndexOf("163") != -1)
{
key = ANSIKey(url,"q=");
returnkey = joinstr(key);
return returnkey;
}
//中搜 soso
else if(url.IndexOf("zhongsou") != -1||url.IndexOf("soso") != -1)
{
key = ANSIKey(url,"w=");
returnkey = joinstr(key);
return returnkey;
}
//TOM
else if(url.IndexOf("tom") != -1)
{
key = ANSIKey(url,"word=");
returnkey = joinstr(key);
return returnkey;
}
else
{
return returnkey;
}
}
}