62,041
社区成员
发帖
与我相关
我的任务
分享
<div>
<ul>
<!--{$news num="10" classid="1" bytype="0"}-->
<li><a href="{news.url}" target="_blank"{news.style}>·{news.i}、{news.title}</a>{news.AddTime dateformat="mm-dd"}</li>
<!--{/$news}-->
</ul>
</div>
public string NewsList(string content)
{
string Attributes = "";
string Text = "";
string AllText = "";
Regex r = new Regex(@"(\{\$news\s+(?<attributes>[^\]]*?)\}(?<text>[\s\S]*?)\{/\$news\})", RegexOptions.Compiled | RegexOptions.IgnoreCase);
foreach (Match m in r.Matches(content))
{
Attributes = m.Groups["attributes"].ToString();
Text = m.Groups["text"].ToString();
AllText = m.Groups[0].Value.ToString();
string TopNum = null;
TopNum = GetAttr(Attributes, "num");
if (TopNum != null)
{
TopNum = " Top " + TopNum + " ";
}
string strSQL = "Select " + TopNum + " * From HL_News Where 1 = 1 ";
string ClassId = null;
ClassId = GetAttr(Attributes, "classid");
if (ClassId != null)
{
strSQL += " And ClassId = " + ClassId + " ";
}
strSQL += " Order By id Desc ";
SqlConnection con = dbConn.GetConn();
con.Open();
SqlDataAdapter da = new SqlDataAdapter(strSQL, con);
DataSet ds = new DataSet();
da.Fill(ds);
if (ds.Tables[0].Rows.Count > 0)
{
int index = 1;
StringBuilder str = new StringBuilder();
foreach (DataRow dr in ds.Tables[0].Rows)
{
StringBuilder txt = new StringBuilder();
txt.Append(Text);
txt = txt.Replace("{news.classid}", dr["classid"].ToString());
txt = txt.Replace("{news.title}", dr["title"].ToString());
txt = txt.Replace("{news.url}", dr["id"].ToString());
txt = txt.Replace("{news.i}", index.ToString());
index++;
str.Append(txt);
}
content = content.Replace(AllText, str.ToString());
}
}
return content;
}
/// <summary>
/// 获取属性的值
/// </summary>
/// <param name="tag">str</param>
/// <param name="tagName">属性名称</param>
/// <returns>属性的值</returns>
private string GetAttr(string tag, string tagName)
{
Regex r = new Regex(@"(?<key>\w+)\s*=\s*(?<value>" + "\"" + "[^\"]*\")", RegexOptions.Compiled | RegexOptions.IgnoreCase);
foreach (Match m in r.Matches(tag))
{
if (m.Groups["key"].ToString().Trim().ToLower() == tagName.ToLower())
{
return m.Groups["value"].ToString().ToLower().Replace("\"", "");
}
}
return null;
}
/// <summary>
/// 获取属性的值
/// </summary>
/// <param name="tag">str</param>
/// <param name="tagName">属性名称</param>
/// <returns>属性的值</returns>
private Dictionary<string, string> GetAttr(string tag)
{
Dictionary<string, string> attr_dic = new Dictionary<string, string>();
Regex r = new Regex(@"(?<key>\w+)\s*=\s*(?<value>" + "\"" + "[^\"]*\")", RegexOptions.Compiled | RegexOptions.IgnoreCase);
foreach (Match m in r.Matches(tag))
{
string key=m.Groups["key"].Value;
string value=m.Groups["value"].Value;
if (attr_dic.Keys.Contains(key))
{
attr_dic[key] += "|" + value;
}
else
{
attr_dic.Add(key,value);
}
}
return attr_dic;
}
string test1 = @"{news.title len=""30"" return=""clearformat""}";
Dictionary<string,string> dic = GetAttr(test1);//30
/*
* + [0] {[len, "30"]} System.Collections.Generic.KeyValuePair<string,string>
+ [1] {[return, "clearformat"]} System.Collections.Generic.KeyValuePair<string,string>
*/
if (dic.Keys.Contains("len"))//判断是否包含
{
}
string test1 = @"{news.title len=""30""}";
string test2 = @"{news.title return=""clearformat""}
";
string value1 = GetAttr(test1,"len");//30
string value2 = GetAttr(test2, "return");//clearformat
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text.RegularExpressions;
using System.Data;
using System.Data.SqlClient;
using Data;
namespace TempLableLib
{
public class Temp_Index
{
public DB_Conn dbConn = new DB_Conn();
/// <summary>
/// 加载解析后的内容
/// </summary>
public string LoadTempContent(string content)
{
return NewsList(content);
}
public string NewsList(string content)
{
string Attributes = "";
string Text = "";
string AllText = "";
Regex r = new Regex(@"(\<\!\-\-\s*\{\$news\s+(?<attributes>[^\]]*?)\}\s*\-\-\>(?<text>[\s\S]*?)\<\!\-\-\s*\{/\$news\}\s*\-\-\>)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
Regex rf = new Regex(@"(\{news.([\s\S]+?)\})", RegexOptions.Compiled | RegexOptions.IgnoreCase);
foreach (Match m in r.Matches(content))
{
Attributes = m.Groups["attributes"].ToString();
Text = m.Groups["text"].ToString();
AllText = m.Groups[0].Value.ToString();
string TopNum = null;
TopNum = GetAttr(Attributes, "num");
if (TopNum != null)
{
TopNum = " Top " + TopNum + " ";
}
string strSQL = "Select " + TopNum + " * From HL_News Where 1 = 1 ";
string ClassId = null;
ClassId = GetAttr(Attributes, "classid");
if (ClassId != null)
{
strSQL += " And ClassId = " + ClassId + " ";
}
strSQL += " Order By id Desc ";
SqlConnection con = dbConn.GetConn();
con.Open();
SqlDataAdapter da = new SqlDataAdapter(strSQL, con);
DataSet ds = new DataSet();
da.Fill(ds);
if (ds.Tables[0].Rows.Count > 0)
{
int index = 1;
StringBuilder str = new StringBuilder();
foreach (DataRow dr in ds.Tables[0].Rows)
{
StringBuilder txt = new StringBuilder();
txt.Append(Text);
txt = txt.Replace("{news.i}", index.ToString());
txt = txt.Replace("{news.url}", dr["id"].ToString());
txt = txt.Replace("{news.classid}", dr["classid"].ToString());
txt = txt.Replace("{news.title}", dr["title"].ToString());
txt = txt.Replace("{news.AddTime}", dr["AddTime"].ToString());
txt = txt.Replace("{news.url}", dr["id"].ToString());
index++;
str.Append(txt);
}
content = content.Replace(AllText, str.ToString());
}
}
return content;
}
/// <summary>
/// 获取属性的值
/// </summary>
/// <param name="tag">str</param>
/// <param name="tagName">属性名称</param>
/// <returns>属性的值</returns>
private string GetAttr(string tag, string tagName)
{
Regex r = new Regex(@"(?<key>\w+)\s*=\s*(?<value>" + "\"" + "[^\"]*\")", RegexOptions.Compiled | RegexOptions.IgnoreCase);
foreach (Match m in r.Matches(tag))
{
if (m.Groups["key"].ToString().Trim().ToLower() == tagName.ToLower())
{
return m.Groups["value"].ToString().ToLower().Replace("\"", "");
}
}
return null;
}
private string SetAttr(string strVal)
{
string strTemp = "";
Dictionary<string, string> dic = GetAttr(strVal);
foreach (KeyValuePair<string, string> kvp in dic)
{
switch (kvp.Key)
{
case "len":
//对title进行截取
break;
case "return":
//处理返回值
break;
}
}
return strTemp;
}
private string ReturnHtml(string str)
{
string strTemp = "";
if (str != "")
{
switch (str)
{
case "clearhtml":
strTemp = ClearHtml(str);
break;
case "clearspace":
strTemp = ClearSpace(str);
break;
case "clearformat":
strTemp = RemoveHtml(str);
break;
case "urlencode":
strTemp = System.Web.HttpContext.Current.Server.UrlEncode(str);
break;
}
}
return strTemp;
}
/// <summary>
/// 获取属性的值
/// </summary>
/// <param name="tag">str</param>
/// <returns>属性的值</returns>
private Dictionary<string, string> GetAttr(string tag)
{
Dictionary<string, string> attr_dic = new Dictionary<string, string>();
Regex r = new Regex(@"(?<key>\w+)\s*=\s*(?<value>" + "\"" + "[^\"]*\")", RegexOptions.Compiled | RegexOptions.IgnoreCase);
foreach (Match m in r.Matches(tag))
{
string key = m.Groups["key"].Value;
string value = m.Groups["value"].Value;
if (attr_dic.ContainsKey(key))
{
attr_dic[key] += "|" + value;
}
else
{
attr_dic.Add(key, value);
}
}
return attr_dic;
}
/// <summary>
/// 过滤html代码
/// </summary>
/// <param name="Htmlstring">str</param>
/// <returns></returns>
private static string ClearHtml(string Htmlstring)
{
Htmlstring = Regex.Replace(Htmlstring, @"<script[^>]*?>.*?</script>", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"<(.[^>]*)>", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"([\r\n])[\s]+", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"-->", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"<!--.*", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(quot|#34);", "\"", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(amp|#38);", "&", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(lt|#60);", "<", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(gt|#62);", ">", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(nbsp|#160);", " ", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(iexcl|#161);", "\xa1", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(cent|#162);", "\xa2", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(pound|#163);", "\xa3", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&(copy|#169);", "\xa9", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"&#(\d+);", "", RegexOptions.IgnoreCase);
Htmlstring.Replace("<", "");
Htmlstring.Replace(">", "");
Htmlstring.Replace("\r\n", "");
Htmlstring.Replace("”", "");
Htmlstring = HttpContext.Current.Server.HtmlEncode(Htmlstring).Trim();
return Htmlstring;
}
private static string ClearSpace(string Htmlstring)
{
Htmlstring = Regex.Replace(Htmlstring, @" ", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @" ", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"<br>", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"<br/>", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"<br />", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"<p>", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"<p/>", "", RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring, @"<p />", "", RegexOptions.IgnoreCase);
return Htmlstring;
}
public static string RemoveHtml(string Htmlstring)
{
string regexstr = @"<[^>]*>";
return Regex.Replace(Htmlstring, regexstr, string.Empty, RegexOptions.IgnoreCase);
}
}
}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<div>
<ul>
<!--{$news num="10" classid="1" bytype="0"}-->
<li><a href="{news.url}" target="_blank">·{news.i}、{news.title}</a>{news.AddTime dateformat="mm-dd"}</li>
<!--{/$news}-->
</ul>
</div>
<div>
<ul>
<!--{$news num="10" classid="2" bytype="0"}-->
<li><a href="{news.url}" target="_blank">·{news.i}、{news.title len="30"}</a>{news.AddTime}</li>
<!--{/$news}-->
</ul>
</div>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<div>
<ul>
<li><a href="11" target="_blank">·1、反对尕达伽的</a>{news.AddTime dateformat="mm-dd"}</li>
<li><a href="10" target="_blank">·2、兔爷如图</a>{news.AddTime dateformat="mm-dd"}</li>
<li><a href="9" target="_blank">·3、同时符合双方的还是</a>{news.AddTime dateformat="mm-dd"}</li>
<li><a href="8" target="_blank">·4、很烦很烦的事</a>{news.AddTime dateformat="mm-dd"}</li>
<li><a href="6" target="_blank">·5、发达省份女女</a>{news.AddTime dateformat="mm-dd"}</li>
<li><a href="5" target="_blank">·6、古典风格的方式</a>{news.AddTime dateformat="mm-dd"}</li>
<li><a href="3" target="_blank">·7、发的所发生的发</a>{news.AddTime dateformat="mm-dd"}</li>
<li><a href="1" target="_blank">·8、的发达省份</a>{news.AddTime dateformat="mm-dd"}</li>
</ul>
</div>
<div>
<ul>
<li><a href="7" target="_blank">·1、{news.title len="30"}</a>2012-9-17 11:26:31</li>
<li><a href="4" target="_blank">·2、{news.title len="30"}</a>2012-9-17 11:26:31</li>
<li><a href="2" target="_blank">·3、{news.title len="30"}</a>2012-9-17 11:26:31</li>
</ul>
</div>
</body>
</html>
Dictionary<string, string> attr_dic= GetAttr(Attributes );
foreach (KeyValuePair<string, string> kvp in dic)
{
switch (kvp.Key)
{
case "len":
//对title进行截取
break;
case "return":
//处理返回值
break;
}
}
public string NewsList(string content)
{
string Attributes = "";
string Text = "";
string AllText = "";
Regex r = new Regex(@"(\{\$news\s+(?<attributes>[^\]]*?)\}(?<text>[\s\S]*?)\{/\$news\})", RegexOptions.Compiled | RegexOptions.IgnoreCase);
Regex rf = new Regex(@"(\{news.\s+(?<attributes>[^\]]*?)\})", RegexOptions.Compiled | RegexOptions.IgnoreCase);
foreach (Match m in r.Matches(content))
{
Attributes = m.Groups["attributes"].ToString();
Text = m.Groups["text"].ToString();
AllText = m.Groups[0].Value.ToString();
string TopNum = null;
TopNum = GetAttr(Attributes, "num");
if (TopNum != null)
{
TopNum = " Top " + TopNum + " ";
}
string strSQL = "Select " + TopNum + " * From HL_News Where 1 = 1 ";
string ClassId = null;
ClassId = GetAttr(Attributes, "classid");
if (ClassId != null)
{
strSQL += " And ClassId = " + ClassId + " ";
}
strSQL += " Order By id Desc ";
SqlConnection con = dbConn.GetConn();
con.Open();
SqlDataAdapter da = new SqlDataAdapter(strSQL, con);
DataSet ds = new DataSet();
da.Fill(ds);
if (ds.Tables[0].Rows.Count > 0)
{
int index = 1;
StringBuilder str = new StringBuilder();
foreach (DataRow dr in ds.Tables[0].Rows)
{
StringBuilder txt = new StringBuilder();
txt.Append(Text);
/// 这里该怎么获取字段名呢?
foreach (Match mm in rf.Matches(Text))
{
}
txt = txt.Replace("{news.classid}", dr["classid"].ToString());
txt = txt.Replace("{news.title}", dr["title"].ToString());
txt = txt.Replace("{news.AddTime}", dr["AddTime"].ToString());
txt = txt.Replace("{news.url}", dr["id"].ToString());
txt = txt.Replace("{news.i}", index.ToString());
index++;
str.Append(txt);
}
content = content.Replace(AllText, str.ToString());
}
}
return content;
}
/// <summary>
/// 获取属性的值
/// </summary>
/// <param name="tag">str</param>
/// <param name="tagName">属性名称</param>
/// <returns>属性的值</returns>
private string GetAttr(string tag, string tagName)
{
Regex r = new Regex(@"(?<key>\w+)\s*=\s*(?<value>" + "\"" + "[^\"]*\")", RegexOptions.Compiled | RegexOptions.IgnoreCase);
foreach (Match m in r.Matches(tag))
{
if (m.Groups["key"].ToString().Trim().ToLower() == tagName.ToLower())
{
return m.Groups["value"].ToString().ToLower().Replace("\"", "");
}
}
return null;
}
/// <summary>
/// 获取属性的值
/// </summary>
/// <param name="tag">str</param>
/// <returns>属性的值</returns>
private Dictionary<string, string> GetAttr(string tag)
{
Dictionary<string, string> attr_dic = new Dictionary<string, string>();
Regex r = new Regex(@"(?<key>\w+)\s*=\s*(?<value>" + "\"" + "[^\"]*\")", RegexOptions.Compiled | RegexOptions.IgnoreCase);
foreach (Match m in r.Matches(tag))
{
string key = m.Groups["key"].Value;
string value = m.Groups["value"].Value;
if (attr_dic.ContainsKey(key))
{
attr_dic[key] += "|" + value;
}
else
{
attr_dic.Add(key, value);
}
}
return attr_dic;
}