using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.IO;
using System.Net;
using System.Text;
public partial class KeyWord : System.Web.UI.Page
{
//关键字加链接 重点词加粗
protected void Page_Load(object sender, EventArgs e)
{
//rc();
Page.Title = GetSinaWeather();
}
#region 方法 RemoveHtmlCode(string strCode)
/// <summary>
/// 去除HTML格式符
/// </summary>
/// <param name="strCode"></param>
/// <returns></returns>
public string RemoveHtmlCode(string strCode)
{
return System.Text.RegularExpressions.Regex.Replace(strCode, "<[^>]+>", "", RegexOptions.Multiline).Trim();
}
#endregion
#region 方法 GetSinaWeather() 获得sina天气
/// <summary>
/// 远程获取新浪网天气
/// </summary>
public string GetSinaWeather()
{
string strUrl = get_Html("http://www.sina.com.cn/iframe/2008/weather/440101.html", 10000, 0, System.Text.Encoding.Default);
string strReg = "<title>[\\s\\S]*?</title>";
string strMove = System.Text.RegularExpressions.Regex.Replace(strUrl, strReg, " ", RegexOptions.IgnoreCase);
return RemoveHtmlCode(strMove).Replace("广州", "");
}
#endregion
#region 函数 string get_Html(string strUrl, int timeout, int enterType) 获取网页内容
/// <summary>
/// 获取指定远程网页内容
/// </summary>
/// <param name="strUrl">所要查找的远程网页地址</param>
/// <param name="timeout">超时时长设置,一般设置为8000</param>
/// <param name="enterType">是否输出换行符,0不输出,1输出文本框换行</param>
/// <returns>以文本方式返回截获的目标页源文件</returns>
/// <param name="encoding">编码方式</param>
public string get_Html(string strUrl, int timeout, int enterType, Encoding encoding)
{
string strResult;
try
{
HttpWebRequest myReq = (HttpWebRequest)HttpWebRequest.Create(strUrl);
myReq.Timeout = timeout;
HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse();
Stream myStream = HttpWResp.GetResponseStream();
strResult = myStream.ToString();
StreamReader sr = new StreamReader(myStream, encoding);
strResult = sr.ReadToEnd();
}
catch (Exception err)
{
strResult = "请求错误:" + err.Message;
}
return strResult;
}
#endregion
#region 静态公共方法 RemoveHeadFootCode(string strCode)去掉前后一个字符
/// <summary>
/// 去掉前后一个字符Substring(0,st1.Length-1);
/// </summary>
/// <param name="strCode"></param>
/// <returns></returns>
public string RemoveHeadFootCode(string strCode)
{
string strHeadCode = strCode != string.Empty ? strCode.Substring(1) : ""; ;
return (strHeadCode != string.Empty ? strHeadCode.Remove(strHeadCode.Length - 1) : "");
}
#endregion
private void rc()
{
string str1 = "bb <a href=\"bbb\" title='网络'>网络</a> 网络技术网络; bb 网络应用 网络基本知识 网络技术网络;网络应用 网络基本知识 bb";
List<string> keys = new List<string>();
keys.Add("bb$http://www.999brain.com");
keys.Add("网络技术网络$http://www.网络技术网络.com");
string result = keyAddUrl(str1, keys);
this.Label1.Text = result;
}
/// <summary>
/// 给关键字加链接,同一关键字只加一次
/// </summary>
/// <param name="src">源字符串</param>
/// <param name="keys">关键字泛型</param>
/// <param name="keys">链接地址</param>
/// <returns>替换后结果</returns>
private string keyAddUrl(string src, List<string> keys)
{
Regex reg = new Regex(@"(?i)(?:^|(?<!<a\b(?>[^<>]*))>)(?>[^<>]*)(?:<|$)");
int length = 0;
string temp = string.Empty;
//return reg.Replace(src, delegate(Match m)
//{
// temp = m.Value;
// length = temp.Length;
// for (int i = keys.Count - 1; i >= 0; i--)
// {
// string[] keyword = keys[i].Split('$');
// temp = Regex.Replace(temp, @"(?is)^((?:(?:(?!" + Regex.Escape(keyword[0]) + @"|</?a\b).)*<a\b(?:(?!</?a\b).)*</a>)*(?:(?!" + Regex.Escape(keyword[0]) + @"|</?a\b).)*)(?<tag>" + Regex.Escape(keyword[0]) + @")", @"$1<b>${tag}</b>");
// length = temp.Length;
// }
// return temp;
//});
temp = src;
length = temp.Length;
string[] keyword = keys[0].Split('$');
temp = Regex.Replace(temp, @"(?is)^((?:(?:(?!" + Regex.Escape(keyword[0]) + @"|</?a\b).)*<a\b(?:(?!</?a\b).)*</a>)*(?:(?!" + Regex.Escape(keyword[0]) + @"|</?a\b).)*)(?<tag>" + Regex.Escape(keyword[0]) + @")", @"$1<b>${tag}</b>");
length = temp.Length;
return temp;
}
protected void btnOk_Click(object sender, EventArgs e)
{
}
}