/// <summary> /// 得到不带分类的表情符数据 /// </summary> /// <returns>表情符表</returns> public static SmiliesInfo[] GetSmiliesListWithoutType() { DataTable dt = DatabaseProvider.GetInstance().GetSmiliesListWithoutType(); if (dt == null || dt.Rows.Count < 1) return null; SmiliesInfo[] smilieslistinfo = new SmiliesInfo[dt.Rows.Count]; for (int i = 0; i < dt.Rows.Count; i++) { smilieslistinfo[i] = new SmiliesInfo(); smilieslistinfo[i].Id = TypeConverter.ObjectToInt(dt.Rows[i]["id"], 0); smilieslistinfo[i].Code = dt.Rows[i]["Code"].ToString(); smilieslistinfo[i].Displayorder = TypeConverter.ObjectToInt(dt.Rows[i]["Displayorder"], 0); smilieslistinfo[i].Type = TypeConverter.ObjectToInt(dt.Rows[i]["smtype"], 0); smilieslistinfo[i].Url = dt.Rows[i]["Url"].ToString(); } return smilieslistinfo; }
/// <summary> /// 转换表情 /// </summary> /// <param name="sDetail">帖子内容</param> /// <param name="__smiliesinfo">表情数组</param> /// <param name="smiliesmax">每种表情的最大使用数</param> /// <returns>帖子内容</returns> private static string ParseSmilies(string sDetail, SmiliesInfo[] smiliesinfo, int smiliesmax) { if (smiliesinfo == null) return sDetail; string smilieformatstr = "[smilie]{0}editor/images/smilies/{1}[/smilie]"; for (int i = 0; i < Smilies.regexSmile.Length; i++) { if (smiliesmax > 0) sDetail = Smilies.regexSmile[i].Replace(sDetail, string.Format(smilieformatstr, BaseConfigs.GetSitePath, smiliesinfo[i].Url), smiliesmax); else sDetail = Smilies.regexSmile[i].Replace(sDetail, string.Format(smilieformatstr, BaseConfigs.GetSitePath, smiliesinfo[i].Url)); } return sDetail; }
/// <summary> /// 重新加载并初始化表情正则对象数组 /// </summary> /// <param name="smiliesList">表情对象数组</param> public static void ResetRegexSmilies(SmiliesInfo[] smiliesList) { int smiliesCount = smiliesList.Length; // 如果数目不同则重新创建数组, 以免发生数组越界 if (regexSmile == null || regexSmile.Length != smiliesCount) regexSmile = new Regex[smiliesCount]; for (int i = 0; i < smiliesCount; i++) { regexSmile[i] = new Regex(@Regex.Escape(smiliesList[i].Code), RegexOptions.None); } }