/// <summary> /// 文字内容里面的图片处理 /// </summary> /// <param name="str"></param> /// <param name="IsLazyLoad"></param> /// <returns></returns> public string ContentImage(string str, int IsLazyLoad = 0) { string[] imgs = RegexTool.GetSimpleRegResultArray(str, @"(<[Ii][Mm][Gg].*?>)"); string temp = ""; foreach (string img in imgs) { temp = img; temp = temp.Replace("'", "\"").Replace(" ", ""); temp = RegexTool.GetRegValue(img, "[Ss][Rr][Cc]=\"(.*?)\""); if (IsLazyLoad == 1) { str = str.Replace(img, "<img class=\"contentlazy\" data-original=\"" + Image(temp) + "\"/>"); } else { str = str.Replace(img, "<img src=\"" + Image(temp) + "\"/>"); } } return(str); }
public SQLPara(string where, string order, string field) { //解析where串 //where = "Name like lbsql{'%" + k + "%'}"; //where = "id in in_lbsql{'%" + k + "%'}"; _ht = new Hashtable(); _showField = field; _orderField = order; _where = where; //处理in 查询 string[] inArry = RegexTool.GetSimpleRegResultArray(_where, "[Ii][Nn] \\([Ll][Bb][Ss][Qq][Ll]\\{(.*?)\\}\\)"); for (int i = 0; i < inArry.Length; i++) { string val = inArry[i]; val = val.Replace("'", ""); string cols = ""; string[] vals = inArry[i].Split(','); for (int j = 0; j < vals.Length; j++) { string col = "inpara" + i + j; cols = cols + "@" + col + ","; _ht.Add(col, vals[j]); } _where = RegexTool.ReplaceRegValue(_where, "[Ii][Nn] \\([Ll][Bb][Ss][Qq][Ll]\\{" + inArry[i] + "\\}\\)", "in (" + cols.TrimEnd(',') + ")", 1); } //处理一般查询 string[] Arry = RegexTool.GetSimpleRegResultArray(_where, "[Ll][Bb][Ss][Qq][Ll]\\{(.*?)\\}"); for (int i = 0; i < Arry.Length; i++) { string val = Arry[i]; string col = "para" + i; val = val.Replace("'", ""); _where = RegexTool.ReplaceRegValue(_where, "[Ll][Bb][Ss][Qq][Ll]\\{" + Arry[i] + "\\}", "@" + col, 1); _ht.Add(col, val); } CreateSqlPara(); }
/// <summary> /// 执行代码替换 /// 在${...}$内 /// </summary> /// <param name="strIn"></param> /// <returns></returns> public static string DoCodeConvert(string strIn, string type, string webpath, string mediapath) { strIn = DoLayout(strIn, type, webpath, mediapath); //====================================================== string[] PartArry = RegexTool.GetSimpleRegResultArray(strIn, @"({[Mm][Oo][Dd]:.*?})"); string partTag = ""; string partConten = ""; string partPara = ""; webpath = webpath.TrimEnd('/'); Lebi_Theme_Skin partskin = new Lebi_Theme_Skin(); foreach (string partStr in PartArry) { partTag = ""; partConten = ""; partPara = ""; if (partStr.Contains("(")) { partTag = RegexTool.GetRegValue(partStr, @"{[Mm][Oo][Dd]:(.*?)\(.*?}"); partPara = RegexTool.GetRegValue(partStr, @"{[Mm][Oo][Dd]:.*?\((.*?)\)}"); } else { partTag = RegexTool.GetRegValue(partStr, @"{[Mm][Oo][Dd]:(.*?)}"); } if (partTag != "") { //模块提取优先级 //1插件中的BLOCK文件夹 //2模板中的自定义设置 //3系统块 string[] plugins = ShopCache.GetBaseConfig().PluginUsed.ToLower().Split(','); foreach (string plugin in plugins) { partConten = HtmlEngine.ReadTxt(webpath + "/plugin/" + plugin + "/systempage/" + type + "/block/" + partTag + ".html"); if (partConten == "") { partConten = HtmlEngine.ReadTxt(webpath + "/plugin/" + plugin + "/block/" + partTag + ".html"); } if (partConten != "") { break; } } if (partConten == "") { partConten = HtmlEngine.ReadTxt(ThemeUrl.GetFullPath(webpath + "/system/" + type + "/block/" + partTag + ".html")); } if (partConten == "") { partConten = HtmlEngine.ReadTxt(ThemeUrl.GetFullPath(webpath + "/system/block/" + partTag + ".html")); } if (partConten != "") { partConten = "<!--MOD_start:" + partTag + "-->\r\n" + DoCodeConvert(partConten, type, webpath, "") + "<!--MOD_end:" + partTag + "-->\r\n"; strIn = RegexTool.ReplaceRegValue(strIn, @"{[Mm][Oo][Dd]:" + partTag + ".*?}", partConten); } } } //========================================================= string str = ""; Type t = typeof(ShopPage); string temp = ""; int[,] d = IndexFlagArry(strIn);//记录开始,结尾标记的数组 if (d.Length > 0) { int begin = 0; string[,] tempArry = new string[d.GetUpperBound(0) + 1, 2];//用于存放一个外层标记的临时数组 for (int i = 0; i < d.GetUpperBound(0); i++) { temp += RegexTool.GetSubString(strIn, begin, d[i, 0]) + "$$$" + i + "$$$";//挑选非标记部组合,将标记部分替换为$$$0$$$,$$$1$$$形式 begin = d[i, 1] + 2; tempArry[i, 0] = "$$$" + i + "$$$"; tempArry[i, 1] = RegexTool.GetSubString(strIn, d[i, 0] + 2, d[i, 1]);//截取不包含开始,结尾标记的块 } temp += RegexTool.GetSubString(strIn, begin, strIn.Length); str = temp;//str已经替除了全部的标记块 for (int i = 0; i < tempArry.GetUpperBound(0); i++) { temp = DoPart(tempArry[i, 1], type, webpath); str = str.Replace("$$$" + i + "$$$", temp); } } return(str); }
/// <summary> /// 载入布局文件 /// </summary> /// <param name="strIn"></param> /// <param name="theme"></param> /// <returns></returns> public static string DoLayout(string strIn, string type, string webpath, string mediapath) { string layout = RegexTool.GetRegValue(strIn, @"{[Ll][Aa][Yy][Oo][Uu][Tt]:(.*?)}"); string cs = RegexTool.GetRegValue(strIn, @"({[Cc][Ll][Aa][Ss][Ss]:.*?})"); if (layout == "") { return(cs + strIn); } string layoutpath = ""; string layoutContent = ""; if (mediapath != "") { layoutpath = webpath + mediapath + "/layout/" + layout + ".layout"; layoutpath = ThemeUrl.GetFullPath(layoutpath); layoutContent = HtmlEngine.ReadTxt(layoutpath); } if (layoutContent == "") { layoutpath = webpath + "/theme/system/systempage/" + type + "/layout/" + layout + ".layout"; layoutpath = ThemeUrl.GetFullPath(layoutpath); layoutContent = HtmlEngine.ReadTxt(layoutpath); } if (layoutContent == "") { layoutpath = webpath + "/theme/system/layout/" + layout + ".layout"; layoutpath = ThemeUrl.GetFullPath(layoutpath); layoutContent = HtmlEngine.ReadTxt(layoutpath); } if (layoutContent == "") { return(""); } string[] holderArray = RegexTool.GetSimpleRegResultArray(layoutContent, @"({[Hh][Oo][Ll][Dd][Ee][Rr]:.*?})"); foreach (string holder in holderArray) { string tag = RegexTool.GetRegValue(holder, @"{[Hh][Oo][Ll][Dd][Ee][Rr]:(.*?)}"); string regtag = ""; foreach (char t in tag) { regtag += "[" + t.ToString().ToUpper() + t.ToString().ToLower() + "]"; } string holdercontent = RegexTool.GetRegValue(strIn, @"<" + regtag + ">(.*?)</" + regtag + ">"); layoutContent = RegexTool.ReplaceRegValue(layoutContent, @"{[Hh][Oo][Ll][Dd][Ee][Rr]:" + tag + ".*?}", holdercontent); } //载入重写模块 string[] rewriteArray = RegexTool.GetSimpleRegResultArray(strIn, @"({[Rr][Ee][Ww][Rr][Ii][Tt][Ee]:.*?})"); foreach (string rewrite in rewriteArray) { string tag = RegexTool.GetRegValue(rewrite, @"{[Rr][Ee][Ww][Rr][Ii][Tt][Ee]:(.*?)}"); string from = ""; string to = ""; from = tag.Substring(0, tag.IndexOf(" ")); to = tag.Substring(tag.IndexOf(" ") + 1, tag.Length - from.Length - 1); string regfrom = ""; string regto = ""; foreach (char t in from) { regfrom += "[" + t.ToString().ToUpper() + t.ToString().ToLower() + "]"; } foreach (char t in to) { regto += "[" + t.ToString().ToUpper() + t.ToString().ToLower() + "]"; } string holdercontent = RegexTool.GetRegValue(strIn, @"<" + regto + ">(.*?)</" + regto + ">"); if (holdercontent == "") { holdercontent = "{MOD:" + to + "}"; } layoutContent = RegexTool.ReplaceRegValue(layoutContent, @"{[Mm][Oo][Dd]:" + regfrom + "}", holdercontent); } layoutContent = cs + layoutContent; return(layoutContent); }