代码改变世界

根据组合关键词屏蔽垃圾广告

2010-10-12 17:34  斌哥tobin  阅读(615)  评论(0编辑  收藏  举报

公司搞投票活动,就有投票公司老是上来发投票广告,不得已,想了个办法,屏蔽投票公司的广告,根据收集到的几个常用广告词,提交的时候检测,有就禁止提交。

连着的词好检测,如“代理投票”,对“代 理 投 票”,“代,理,投,票”这样的广告,我选择了组合关键词判断。

如有人填写“代 理 投 票”,我的办法是 “代” “理” “投” “票” 这四个字同时出现时,就判断是广告,禁止提交了。

 

 

代码
/// <summary>
        
/// 检测是否含有垃圾信息,有则禁止提交,imbin
        
/// </summary>
        
/// <param name="str"></param>
        
/// <returns></returns>
        public static bool CheckBadWords(string str)
        {
            
if (string.IsNullOrEmpty(str)) return false;
            
bool isBad = false;
            
//关键词格式:代理投票,代|理|投|票
            string BadWords = ConfigurationManager.AppSettings["BadWords"];
            
if (!string.IsNullOrEmpty(BadWords))
            {
                var arrwords 
= BadWords.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                
string[] arrwords2 = { "" };
                
foreach (string word in arrwords)
                {
                    
if (word.Contains("|"))//是否组合,代表必须同时出现
                    {
                        arrwords2 
= word.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
                        
if (arrwords2.Length > 0)
                        {
                            isBad 
= true;
                            
foreach (string word2 in arrwords2)
                            {
                                
if (!str.Contains(word2))
                                {
                                    isBad 
= falsebreak;//有一个词不对应则跳出
                                }
                            }
                        }
                    }
                    
else
                    {
                        
if (str.Contains(word))
                        {
                            isBad 
= true;
                        }
                    }
                    
if (isBad) break;
                }
            }
            
return isBad;
        }