asp关键词屏蔽过滤函数代码
作者:雨哲 发布时间:2010-05-04 16:32:00
现在很多地方都需要用到关键词过滤功能。
比如一般的服务器都不允许一些词出现在网页上,站长有时候会对在本网站发布信息的内容进行一个广告过滤等。
雨哲今天就遇到了因为关键词过滤问题而且导致网站被暂停了一小段时间。
为此,雨哲再次重新写了一个关键词过滤函数。
在这里分享给大家。转载或使用的朋友请保留一下作者信息呵。
下面是函数及测试代码,保存为一个asp文件运行即可看到效
<%@language="vbscript" codepage="936"%>
<%
Option Explicit
'考虑到全局使用,下面两个变量请在全局变量中定义
Const TreeWebBadWordsEnable = True
Const TreeWebBadWordsList = "二位@三位@四位词语@雨哲|原创@五位长度的@6位长度的词@八位长度的关键词"
Dim OldWords
OldWords = "这是雨哲写的一段测试文字,包含上面需要过滤的关键词语,可以是二位的、三位的关键,也可以是四位词语、五位长度的、6位长度的词语也可以,八位长度的关键词上面我也添加了。当然,你也可以自己添加关键词列表,位数当然不作限制,只要不为空就行了哈。这是雨哲个人原创函数,转换请保留一下下作者信息。谢谢!请在使用的时候根据自己的情况进行修改。"
Response.Write "<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"">"
Response.Write "<html xmlns=""http://www.w3.org/1999/xhtml"" lang=""zh-cn"">"
Response.Write "<head>"
Response.Write "<meta http-equiv=""Content-Type"" content=""text/html; charset=gb2312"">"
Response.Write "<title>雨哲原创之关键词过滤函数 - aspxhome.com</title>"
Response.Write "</head><body>"
Response.Write "<b>原文内容:</b>" & OldWords
Response.Write "<br><br><b>过滤内容:</b>" & YuZhe_ReplaceBadWords(OldWords)
Response.Write "</body></html>"
Function YuZhe_ReplaceBadWords(ByVal iWords)
'作者 雨哲[QQ:425162221 Web:http://www.yz81.com] 这里需要另外定义两个变量,一个TreeWebBadWordsEnable--是否启用过滤功能,TreeWebBadWordsList--要过滤的关键词列表
'TreeWebBadWordsEnable - True/False 是否开启关键词过滤功能 True-开启 False-关闭
'TreeWebBadWordsList - 关键词列表,多个请用@分隔
' 如果是非连续词语请用|分隔(如:要过滤"雨哲"和"原创",而且这两个词不是连续的,但只要在指定的内容里面两个都出现的话,就进行过滤)
' 例:Const TreeWebBadWordsList = "关键词一@关键词二@雨哲|原创@关键词四" '只要在指定内容iWords里含“雨哲”和“原创”就进行过滤
'预设过滤方法:当关键词位数为1时替换为**,为2时替换为第一个字**,为3时替换为**第二个字**,为四时替换为**中间两个字**,大于4时替换为前两个字**第三位到总位数减一**
Dim StrReplaceWords, StrBadWordsList
StrReplaceWords = Trim(iWords)
StrBadWordsList = Trim(TreeWebBadWordsList)
If TreeWebBadWordsEnable = False Or Len(TreeWebBadWordsList) < 1 Or Len(StrReplaceWords) < 1 Then
YuZhe_ReplaceBadWords = iWords
Exit Function
End If
Dim IsBadWords, ArrBadWords, StrBadWords, iBadWords, LenBadWords, NewBadWords, StrBadWord, ArrBadWord, iBadWord, LenBadWord
ArrBadWords = Split(StrBadWordsList, "@")
IsBadWords = False
For iBadWords = LBound(ArrBadWords) To UBound(ArrBadWords)
StrBadWords = ArrBadWords(iBadWords)
LenBadWords = Len(StrBadWords)
If LenBadWords < 1 Then Exit For
If InStr(StrBadWords, "|") > 0 Then '判断是否非连续关键词
ArrBadWord = Split(StrBadWords, "|")
For iBadWord = LBound(ArrBadWord) To UBound(ArrBadWord)
StrBadWord = ArrBadWord(iBadWord)
If InStr(StrReplaceWords, StrBadWord) > 0 Then '判断是否非连续关键词是否都出现
IsBadWords = True
Else
Exit For '只要有一个没出现就退出For循环而且不作替换屏蔽
End If
If iBadWord = UBound(ArrBadWord) and IsBadWords = True Then
LenBadWord = Len(StrBadWord)
Select Case LenBadWord '获取替换后的新词
Case 1
NewBadWords = "{**}"
Case 2
NewBadWords = "{" & Left(StrBadWord, 1) & "**}"
Case 3
NewBadWords = "{**" & Right(StrBadWord, 2) & "}"
Case 4
NewBadWords = "{**" & Mid(StrBadWord, 2, 2) & "**}"
Case Else
NewBadWords = "{" & Left(StrBadWord, 2) & "**" & Mid(StrBadWord, 4, LenBadWord-4) & "**}"
End Select
StrReplaceWords = Replace(StrReplaceWords, StrBadWord, NewBadWords)
End If
Next
Else
If InStr(StrReplaceWords, StrBadWords) > 0 Then
IsBadWords = True
Select Case LenBadWords '获取替换后的新词
Case 1
NewBadWords = "{**}"
Case 2
NewBadWords = "{" & Left(StrBadWords, 1) & "**}"
Case 3
NewBadWords = "{**" & Right(StrBadWords, 2) & "}"
Case 4
NewBadWords = "{**" & Mid(StrBadWords, 2, 2) & "**}"
Case Else
NewBadWords = "{" & Left(StrBadWords, 2) & "**" & Mid(StrBadWords, 4, LenBadWords-4) & "**}"
End Select
StrReplaceWords = Replace(StrReplaceWords, StrBadWords, NewBadWords)
End If
End If
Next
If IsBadWords = False Then
YuZhe_ReplaceBadWords = iWords
Else
YuZhe_ReplaceBadWords = StrReplaceWords
End If
End Function
%>
猜你喜欢
- 程序还不是很精简,以后再修改,程序所用的数据库为-- “冯志宏”-- 所写的--“追捕”--软件中所带IP数据库和“国华软件 Guohua
- 语言是信息传播的主要障碍。多语言网站,顾名思义就是能够以多种语言(而不是单种语言)为用户提供信息服务,让使用不同语言的用户都能够从同个网站获
- 【先锋缓存类】Ver2004作者:孙立宇、apollosun、ezhonghua官方网站:http://www.lkstar.com 技术支
- 工欲善其事,必先利其器。作为更专业的前端工程师,我们需要强劲的IDE协助我们写出规范、美观、漂亮的JavaScript代码,首先要作的就是对
- 说明:通过随机产生密码,然后将密码EMail给注册用户,你可以确认用户的EMail填写是否正确。自动产生的密码往往安全性更高,同时,你可以过
- 项目有时要用一些Ajax的效果,因为比较简单,也就没有去用什么Ajax.net之类的东西,手写代码也就实现了。、第二天,有人反馈错误;说是只
- 今天在看框架的时候无意间看到了document.compatMode,经过一番资料查找,终于搞懂了。文档模式在开发中貌似很少用到,最常见的是
- 任何数据库系统都无法避免崩溃的状况,即使你使用了Clustered,双机热备等等,仍然无法完全根除系统中的单点故障,何况对于大部分用户来说,
- 程序代码: '关键字的搜索 str="select * from tableNam
- 说起页面执行时间相信大家并不陌生,如果你经常逛论坛,就会发现很多论坛底部都显示有页面执行时间,那么什么是页面执行时间呢?我个人理解是一个网页
- 是的,我在这里要说:注册表单将死(好拗口啊,但是不知道怎么翻译更恰当)。回想一下,当你想享受一个网站服务的时候,碰到的第一件事是什么?一个表
- 这几天看了篇叫"Penetration: from application down to OS (Oracle)"的文
- Yoho, 大家好,又是我哟~ 首先抱歉让大家等了这么多时间。最近实在比较繁忙啦。不过我还是会尽量抽空出来给大家讲点有的没的,欢迎大家继续
- 社会上的任何人,都不愿意自己给人留下难以交往的印象,就算是那些冷漠、寡情的人他们也在不断地寻求一种通道,达到与他人的交流和沟通。如果,在你与
- 游标(Cursor)是处理数据的一种方法,为了查看或者处理结果集中的数据,游标提供了在结果集中一次以行或者多行前进或向后浏览数据的能力。我们
- 使用本文提供的JavaScript脚本,配合Dreamweaver的层和行为的运用,可以在页面中显示可拖动的精美月历。具体制作步骤如下:1、
- 在ASP.NET2.0通过SMTP的验证发送EMAIL ,代码如下:’Create a new MailMes
- 数据库的表Info,表部分结构:Info_Id  
- 对数据库的管理常规就是进行预防性的维护,以及修复那些出现问题的内容。进行检查和修复通常具有四个主要的任务:1. 对表进行优化2. 对表进行分
- 大家都知道对于一个页面来说,最基本的结构呢就是<html> <head> <!-- 头部信息内容区域