过滤非法字符

来源:互联网 发布:外汇交易员 知乎 编辑:程序博客网 时间:2024/05/01 13:50

/// <summary>过滤脏字将字体替换
       
/// </summary>
       
/// <param name="text"></param>
       
/// <returns></returns>
        public static string FilterKeyWord(string text, string repStr)
        {
           
string input = text;

           
for (int i = 0; i < repStr.Split('').Length; i++)
            {
                MatchCollection matches
= null;
               
string temp = protectHtml(input, ref matches);
                temp
= Filter(temp, repStr.Split('')[i]);
                input
= restoreHtml(temp, matches);
            }
           
return input;
        }
private static string protectHtml(string input, ref MatchCollection matches)
        {
           
//匹配html的正则
            Regex htmlReg =
               
new Regex(@"/<.*?/>", RegexOptions.Multiline);
           
//获取匹配集合
            matches = htmlReg.Matches(input);
           
//设置替换字串
            string markFormat = "[[{0}]]";
           
//替换html,记录位置
            for (int i = 0; i < matches.Count; i++)
            {
                input
= input.Replace(matches[i].Value, string.Format(markFormat, i));
            }
           
return input;
        }
private static string restoreHtml(string input, MatchCollection matches)
        {
           
//设置替换字串
            string markFormat = "[[{0}]]";
           
for (int i = 0; i < matches.Count; i++)
            {
                input
= input.Replace(string.Format(markFormat, i), matches[i].Value);
            }
           
return input;
        }
private static string Filter(string input, string replace)
        {
           
//设置星号
            string replaceformat = "*";
            Regex reg
= new Regex(String.Format("{0}", replace), RegexOptions.Multiline);
           
return reg.Replace(input, string.Format(replaceformat, replace));
        }


调用
 string badStr = "<p>adfsf变化色和sss性<a href='#?id=2008'>年份</a></p>";
Response.Write("<br/>" + FilterKeyWord(badStr , new Config().Badtext));
一般把脏话写在xml,new Config().Badtext这个我就不具体,
楼主测试时候
Response.Write("<br/>" + FilterKeyWord(badStr ,"色|性" ));

原创粉丝点击