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
%>


猜你喜欢
- 在使用npm 的过程中,搜索网上的资料基本上可以看到类似如下的描述:“npm是国外的,使用起来比较慢,我们这里使用淘宝的cnpm镜像”。初体
- 在pytorch的CNN代码中经常会看到x.view(x.size(0), -1)首先,在pytorch中的view()函数就是用来改变te
- 当然这点小问题是难不倒我们程序员的,“max+1啊”,有人会说这样的方式。是的,这种方式实现起来也比较简单。当然你也许还会说,最Sql的方式
- 代码如下:--相信大家肯定经常会把数据导入到数据库中,但是可能会有些记录行的所有列的数据是null,这为null的数据是我们不需要 --现在
- virtualenv简介在开发Python应用程序的时候,我们的系统上通常只会安装一个Python版本:例如 3.7。所有使用 pip 安装
- <script language=javascript> function moveIt(obj){ var tableId;
- 前言之前有人提了一个需求,我一看此需求用正则表达式最合适不过。考虑到之前每次使用正则表达式,都是临时抱佛脚,于是这次我就一边完成任务一边系统
- 导入模块from bs4 import BeautifulSoupsoup = BeautifulSoup(html_doc,"h
- 最近发现现有框架的通用查询存储过程的性能慢,于是仔细研究了下代码:Alter PROCEDURE [dbo].[AreaSelect]&nb
- Facebook的网站速度做为最关键的公司任务之一。在2009年,我们成功地实现了Facebook网站速度提升两倍 。而正是我们的工程师团队
- find()方法判断字符串str,如果起始索引beg和结束end索引能找到在字符串或字符串的一个子串中。语法以下是find()方
- MySQL是一个功能强大的开源数据库。随着越来越多的数据库驱动的应用程序,人们一直在推动MySQL发展到它的极限。这里是101条调节和优化M
- 前言:通过端口扫描我们可以知道目标主机都开放了哪些服务,下面通过TCP connect来实现一个TCP全连接端口扫描器。一个简单的端口扫描器
- 内容摘要:除了内部性能增强和优化外,IIS6.0版本的 Active Server Pages(ASP)&nb
- 本文实例讲述了Go语言map字典用法。分享给大家供大家参考。具体分析如下:这段代码生成了青岛、济南、烟台三个城市拼音和汉字的对照字典,根据拼
- 【原文地址】 Tip/Trick: Supporting Full Screen Mode with Silverlight 【原文发表日期
- Python线程与进程进程:进程是程序的一次执行,每个进程都有自己的地址空间、内存、数据栈以及其他记录其运行的辅助数据。线程:所有的线程运行
- QueueTornado的tornado.queue模块为基于协程的应用程序实现了一个异步生产者/消费者模式的队列。这与python标准库为
- Microsoft? SQL Server? 2000 的可用版本如下:SQL Server 2000企业版作为生产数据库服务器使用。支持
- 学习了一点opencv的知识于是找了个小项目来实践一下。这里先说明一下,我的实现方法不见得是最好的(因为这只是一个用于练习的项目)仅作参考,