公司搞投票活动,就有投票公司老是上来发投票广告,不得已,想了个办法,屏蔽投票公司的广告,根据收集到的几个常用广告词,提交的时候检测,有就禁止提交。
连着的词好检测,如“代理投票”,对“代 理 投 票”,“代,理,投,票”这样的广告,我选择了组合关键词判断。
如有人填写“代 理 投 票”,我的办法是 “代” “理” “投” “票” 这四个字同时出现时,就判断是广告,禁止提交了。
代码
/// <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 = false; break;//有一个词不对应则跳出
}
}
}
}
else
{
if (str.Contains(word))
{
isBad = true;
}
}
if (isBad) break;
}
}
return isBad;
}
/// 检测是否含有垃圾信息,有则禁止提交,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 = false; break;//有一个词不对应则跳出
}
}
}
}
else
{
if (str.Contains(word))
{
isBad = true;
}
}
if (isBad) break;
}
}
return isBad;
}