当前位置: 首页 > 图文教程 > 网络编程 > ASP > asp智能脏话过滤系统v1.0

ASP
提高SQL的执行效率的ASP的五种做法
asp的offset的一个go to page
asp中command的在单条记录时,有些字段显示为空的问题
asp,php一句话木马整理方便查找木马
asp 合并记录集并删除的sql语句
asp下循环一行多少个
asp循环行数输出函数
asp access重新开始编号
ASP生成数字相加求和的BMP图片验证码
静态页面利用JS读取cookies记住用户信息
比较详细的Asp伪静态化方法及Asp静态化探讨
asp Response.flush 实时显示进度
Asp高级故障解决以及相关代码
asp智能脏话过滤系统v1.0
ASP文件中的安全问题
Access数据库中“所有记录中均未找到搜索关键字”的解决方法
asp两组字符串数据比较合并相同数据
asp MYSQL出现问号乱码的解决方法
asp文章中随机插入网站版权文字的实现代码
ASP利用XMLHTTP实现表单提交以及cookies的发送的代码

ASP 中的 asp智能脏话过滤系统v1.0


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 81 ::
收藏到网摘: n/a

功能比较不错的脏话过滤系统,就是代码太长了,具体算法大家可以自己研究下 <%
'**********************************************************
'*智能脏话过滤系统v1.0 * *
'*转载请保留版权信息,多谢 * 拉 *
'*调用方法:sayy=ND_say_what(sayy),sayy为内容输入 * 图 *
'*程序作者:阮丁远,(网名:柏拉图的程序) 版权所有 * 的 *
'*qq:657697290 * 序 *
'*最后修改:20080609 * 著 *
'*(struct,spring,,....net,www.ruanchen.com|强人工智能系统 2049年)还未开发基于分词数据库的形容词
,名词等归类的,和带自动优先级式分词,
'*(struct,spring,,....net,www.ruanchen.com|强人工智能系统 2049年)和xml多层式的字与字最大间隔设
置(精确到单个字与单个字的间隔,
'*(struct,spring,,....net,www.ruanchen.com|强人工智能系统 2049年)因为连续的单个字与单个字间可能
也有随机性空格) 及语义嵌套,递归式冗余纠错,和
'*(struct,spring,,....net,www.ruanchen.com|强人工智能系统 2049年)程序语义理解,人工神经元语义理
解的更高版本
'**********************************************************
function ND_say_what(sayyyyx)

'本代码使用说明:如 ivv=0,icc=0,zang_data(ivv,0,0)="操|日|靠|ri|cao|草
|kao",icc=icc+1,zang_data(ivv,icc,0)="他",zang_data(ivv,icc,1)=2,表示如果"操|日|靠|ri|cao|草
|kao"中的"操"字或"日"字或其他字 与 zang_data(ivv,icc,0)="他"中指定的"他"字相隔zang_data
(ivv,icc,1)=2指定的2个字的距离或小于2个字距离,就认为此语句为脏话,并自动过滤掉
'*的使用: zang_data(0,0,0)="去死妈",zang_data(0,1,0)="*"之类 表示只要存在"去死妈"这些字 就过
滤掉 ,而不用考虑字符距离等 ,这与zang_data(0,0,0)="去死妈",zang_data(0,1,0)=.....不存在 的情
况 的效果等效
' 一个英文的长度为1,一个中文的长度也算为1
' 对于 "杀死"两字, 则认为 "杀"字 与 "死"字 相差0个字符, "杀 死"两字中 也认为 "杀"字 与 "死"
字 相差0个字符,因为会自动忽略字与字间的空格

zang_len=999
zang_yufa_xiangguan_list_max=22
dim zang_data(999,22,2)

'初始化一切
for zang_lena=0 to zang_len-1
for zang_yufa_xiangguan_lena=0 to zang_yufa_xiangguan_list_max-1
zang_data(zang_lena,zang_yufa_xiangguan_lena,0)=""
zang_data(zang_lena,zang_yufa_xiangguan_lena,1)=2 '指定如果zang_data
(zang_lena,zang_yufa_xiangguan_lena,0)的字符串与其对应的后面的数组元素的字符串相隔几个长度或
相隔小于此指定的长度值的字符串时才认定为脏话
next
next
konggexx="
"&"$_kongge_$"&" "&"$_kongge_$"&" "&"$_kongge_$"&"<br>"&"$_kongge_$"&"<p>"&"$_kongge_$
"&"</p>"&"$_kongge_$"&","&"$_kongge_$"&"'"&"$_kongge_$"&"""&"$_kongge_$"&"="&"$_kongge_$"&"
="&"$_kongge_$"&"-"&"$_kongge_$"&"_"&"$_kongge_$"&"+"&"$_kongge_$"&"%"&"$_kongge_$"&"$"&"$_k
ongge_$"&"#"&"$_kongge_$"&"?"&"$_kongge_$"&"!"&"$_kongge_$"&"~"&"$_kongge_$"&"("&"$_kongge_$
"&")"&"$_kongge_$"&"<"&"$_kongge_$"&">"&"$_kongge_$"&"["&"$_kongge_$"&"]"&"$_kongge_$"&"{"&"
$_kongge_$"&"}"&"$_kongge_$"&":"&"$_kongge_$"&";"&"$_kongge_$"&"."&"$_kongge_$"&"/"&"$_kongg
e_$"&"\"&"$_kongge_$"&"^"&"$_kongge_$"&"*"&"$_kongge_$"&"@"&"$_kongge_$"&"&"&"$_kongge_$"&"|
" '指定所有空格性的字符,用$_kongge_$隔开,这里空格指定了英文空格和中文空格
heihack=" *** " '把脏话替换成什么


'======================================================
'脏话数据库v1.0-20080609,一切脏话的脏话数据库在下面:
ivv=0
icc=0
zang_data(ivv,0,0)="杀|sha|sa|干|gan" '如果 杀 和 死 字同时存在,且两字间相隔的字符数小于或
等于对应的zzang_data(aa,yy,1)指定的值,则认定此为脏话
zang_data(ivv,icc,0)="死|si|shi"
zang_data(ivv,icc,1)=0
icc=icc+1
zang_data(ivv,icc,0)="掉"
zang_data(ivv,icc,1)=0
icc=icc+1
zang_data(ivv,icc,0)="了"
zang_data(ivv,icc,1)=0
'-----------------------------
ivv=ivv+1
icc=0
zang_data(ivv,0,0)="把|ba"
icc=icc+1
zang_data(ivv,icc,0)="杀|sha|sa|干" '把...... 杀 ,相隔5个或小于5个字符串
zang_data(ivv,icc,1)=5
'-----------------------------
ivv=ivv+1
icc=0
zang_data(ivv,0,0)="去|qu"
icc=icc+1
zang_data(ivv,icc,0)="杀" '把....拉出 去 杀或 去 杀 了 ... ,相隔4个或小于4个字符串
zang_data(ivv,icc,1)=4
'-----------------------------
ivv=ivv+1
icc=0
zang_data(ivv,0,0)="操|日|靠|ri|cao|草|kao|干|gan|gang|jie|jian|奸"
icc=icc+1
zang_data(ivv,icc,0)="你" '操你妈,操你吗 ,.....
zang_data(ivv,icc,1)=0
icc=icc+1
zang_data(ivv,icc,0)="ma|妈" '可能为 操nima ,操他ma,操tama,... 故其对应的zang_data(aa,yy,1)
指定为2
zang_data(ivv,icc,1)=2
icc=icc+1
zang_data(ivv,icc,0)="ni"
zang_data(ivv,icc,1)=0
icc=icc+1
zang_data(ivv,icc,0)="她" '可能为 操死她,操她,操si她 故其对应的zang_data(aa,yy,1)指定为2
zang_data(ivv,icc,1)=2
icc=icc+1
zang_data(ivv,icc,0)="他" '可能为 操死他,操他,操si他 故其对应的zang_data(aa,yy,1)指定为2
zang_data(ivv,icc,1)=2
icc=icc+1
zang_data(ivv,icc,0)="它" '可能为 操死它,操它,操si它 故其对应的zang_data(aa,yy,1)指定为2
zang_data(ivv,icc,1)=2
icc=icc+1
zang_data(ivv,icc,0)="ta" '可能为 操死ta,操ta,操sita 故其对应的zang_data(aa,yy,1)指定为2
zang_data(ivv,icc,1)=2
icc=icc+1
zang_data(ivv,icc,0)="娘|niang"
zang_data(ivv,icc,1)=2
icc=icc+1
zang_data(ivv,icc,0)="b|逼" '草你吗b
zang_data(ivv,icc,1)=2
'-----------------------------
ivv=ivv+1
icc=0
zang_data(ivv,0,0)="我|wo"
icc=icc+1
zang_data(ivv,icc,0)="操|日|靠|ri|cao|草|kao|干|gan|gang|jie|jian|奸|杀|灭"
zang_data(ivv,icc,1)=0

'-----------------------------
ivv=ivv+1
icc=0
zang_data(ivv,0,0)="操|日|靠|ri|cao|草|kao|奸"
icc=icc+1
zang_data(ivv,icc,0)="*"
zang_data(ivv,icc,1)=0
'-----------------------------
ivv=ivv+1
icc=0
zang_data(ivv,0,0)="去你妈|去你吗|去你ma"
icc=icc+1
zang_data(ivv,icc,0)="*"
zang_data(ivv,icc,1)=0
'-----------------------------
ivv=ivv+1
icc=0
zang_data(ivv,0,0)="去死"
icc=icc+1
zang_data(ivv,icc,0)="*"
zang_data(ivv,icc,1)=0
'-----------------------------
ivv=ivv+1
icc=0
zang_data(ivv,0,0)="你妈|你吗|你ma|你妈"
icc=icc+1
zang_data(ivv,icc,0)="b|逼"
zang_data(ivv,icc,1)=1 '你妈的b ,你妈b

'-----------------------------
ivv=ivv+1
icc=0
zang_data(ivv,0,0)="性"
icc=icc+1
zang_data(ivv,icc,0)="爱" '性 爱
zang_data(ivv,icc,1)=0
'-----------------------------
ivv=ivv+1
icc=0
zang_data(ivv,0,0)="做|zuo|作"
icc=icc+1
zang_data(ivv,icc,0)="爱|ai"
zang_data(ivv,icc,1)=1
'-----------------------------
ivv=ivv+1
icc=0
zang_data(ivv,0,0)="做|zuo|作"
icc=icc+1
zang_data(ivv,icc,0)="爱|ai"
zang_data(ivv,icc,1)=1
'-----------------------------
ivv=ivv+1
icc=0
zang_data(ivv,0,0)="a|毛|三级|日本"
icc=icc+1
zang_data(ivv,icc,0)="片|pian"
zang_data(ivv,icc,1)=2
'-----------------------------
ivv=ivv+1
icc=0
zang_data(ivv,0,0)="av|性"
icc=icc+1
zang_data(ivv,icc,0)="工作者"
zang_data(ivv,icc,1)=20
'-----------------------------
ivv=ivv+1
icc=0
zang_data(ivv,0,0)="日本"
icc=icc+1
zang_data(ivv,icc,0)="*"
zang_data(ivv,icc,1)=0
'-----------------------------
ivv=ivv+1
icc=0
zang_data(ivv,0,0)="看|see"
icc=icc+1
zang_data(ivv,icc,0)="三级"
zang_data(ivv,icc,1)=3
'-----------------------------
ivv=ivv+1
icc=0
zang_data(ivv,0,0)="找"
icc=icc+1
zang_data(ivv,icc,0)="小姐"
zang_data(ivv,icc,1)=2
'-----------------------------
ivv=ivv+1
icc=0
zang_data(ivv,0,0)="晚上"
icc=icc+1
zang_data(ivv,icc,0)="小姐"
zang_data(ivv,icc,1)=12
'-----------------------------
ivv=ivv+1
icc=0
zang_data(ivv,0,0)="傻|sha|sa|啥|s"
icc=icc+1
zang_data(ivv,icc,0)="b|比|逼"
zang_data(ivv,icc,1)=0
'-----------------------------

ivv=ivv+1
icc=0
zang_data(ivv,0,0)="s"
icc=icc+1
zang_data(ivv,icc,0)="b"
zang_data(ivv,icc,1)=0
'-----------------------------
ivv=ivv+1
icc=0
zang_data(ivv,0,0)="变态"
icc=icc+1
zang_data(ivv,icc,0)="杀"
zang_data(ivv,icc,1)=15
'-----------------------------

ivv=ivv+1
icc=0
zang_data(ivv,0,0)="人"
icc=icc+1
zang_data(ivv,icc,0)="渣"
zang_data(ivv,icc,1)=0
'-----------------------------

ivv=ivv+1
icc=0
zang_data(ivv,0,0)="垃"
icc=icc+1
zang_data(ivv,icc,0)="圾"
zang_data(ivv,icc,1)=0
'-----------------------------
ivv=ivv+1
icc=0
zang_data(ivv,0,0)="huan|huang|黄"
icc=icc+1
zang_data(ivv,icc,0)="色|se"
zang_data(ivv,icc,1)=0
'-----------------------------
ivv=ivv+1
icc=0
zang_data(ivv,0,0)="ma|妈"
icc=icc+1
zang_data(ivv,icc,0)="b|比|逼"
zang_data(ivv,icc,1)=0
'-----------------------------

ivv=ivv+1
icc=0
zang_data(ivv,0,0)="搞|gao"
icc=icc+1
zang_data(ivv,icc,0)="b|比|逼"
zang_data(ivv,icc,1)=0
'-----------------------------
功能比较不错的脏话过滤系统,就是代码太长了,具体算法大家可以自己研究下
ivv=ivv+1
icc=0
zang_data(ivv,0,0)="他|她|它"
icc=icc+1
zang_data(ivv,icc,0)="ma的|妈的|妈地|妈得"
zang_data(ivv,icc,1)=0
'-----------------------------
ivv=ivv+1
icc=0
zang_data(ivv,0,0)="装"
icc=icc+1
zang_data(ivv,icc,0)="b|比|逼"
zang_data(ivv,icc,1)=0
'-----------------------------

ivv=ivv+1
icc=0
zang_data(ivv,0,0)="你妈|你吗|你ma|你妈"
icc=icc+1
zang_data(ivv,icc,0)="的"
zang_data(ivv,icc,1)=0
'-----------------------------

ivv=ivv+1
icc=0
zang_data(ivv,0,0)="神经病"
icc=icc+1
zang_data(ivv,icc,0)="*"
zang_data(ivv,icc,1)=0
'-----------------------------
ivv=ivv+1
icc=0
zang_data(ivv,0,0)="有病|有毛病"
icc=icc+1
zang_data(ivv,icc,0)="啊|阿|a|吗"
zang_data(ivv,icc,1)=0
'-----------------------------
ivv=ivv+1
icc=0
zang_data(ivv,0,0)="找死"
icc=icc+1
zang_data(ivv,icc,0)="*"
zang_data(ivv,icc,1)=0
'-----------------------------
ivv=ivv+1
icc=0
zang_data(ivv,0,0)="想死"
icc=icc+1
zang_data(ivv,icc,0)="啊|阿|a|吗"
zang_data(ivv,icc,1)=4
'-----------------------------
ivv=ivv+1
icc=0
zang_data(ivv,0,0)="想不想"
icc=icc+1
zang_data(ivv,icc,0)="死"
zang_data(ivv,icc,1)=4
'-----------------------------
ivv=ivv+1
icc=0
zang_data(ivv,0,0)="是不是"
icc=icc+1
zang_data(ivv,icc,0)="死"
zang_data(ivv,icc,1)=4

'-----------------------------
ivv=ivv+1
icc=0
zang_data(ivv,0,0)="拖出去"
icc=icc+1
zang_data(ivv,icc,0)="*"
zang_data(ivv,icc,1)=0


'=====end 脏话数据库=================================================


sayyssx=lcase(sayyyyx)
'第一层循环
for zang_lenav=0 to zang_len-1
aassdaks=trim(zang_data(zang_lenav,0,0))

if aassdaks<>"" then
aassdaksa=split(aassdaks,"|")
'第二层循环,针对 "dsf|2343|34234|df"之类中的各元素扫描
for aassdxsx=0 to ubound(aassdaksa)
sssaac=lcase(trim(aassdaksa(aassdxsx)))

have_di2cen=1
count_lllppt=0
'针对 如果 存在重复的多个类似的脏话,则do while ,直到过滤完
do while have_di2cen=1

count_lllppt=count_lllppt+1
if count_lllppt>9999 then exit do '防止自循环
have_di2cen=0


if instr(1,sayyssx,sssaac,1)<>0 then
posfd=instr(1,sayyssx,sssaac,1)
have_di2cen=1

'第三层循环
for zang_yufa_xiangguan_lenav=1 to zang_yufa_xiangguan_list_max-1
aassdakc=trim(zang_data(zang_lenav,zang_yufa_xiangguan_lenav,0))
aassdakcc=clng(zang_data(zang_lenav,zang_yufa_xiangguan_lenav,1))

need_n2=1

if aassdakc="" and zang_yufa_xiangguan_lenav=1 then
if posfd-1<1 then
sstrt=""
else
sstrt=mid(sayyssx,1,posfd-1)
end if
if posfd+len(sssaac)>len(sayyssx) then
enddt=""
else
enddt=mid(sayyssx,posfd+len(sssaac),len(sayyssx)-(posfd+len(sssaac))+1)
end if
sayyssx=sstrt&thzzzf&enddt
need_n2=0
exit for
end if

if aassdakc<>"" then
aassdakcyy=split(aassdakc,"|")

'第四层循环,针对 "dsf|2343|34234|df"之类中的各元素扫描
for aassdakcx=0 to ubound(aassdakcyy)
sssaacc=lcase(trim(aassdakcyy(aassdakcx)))
thzzzf=heihack
'--1--
if sssaacc="" and aassdakcx=0 and zang_yufa_xiangguan_lenav=1 then

if posfd-1<1 then
sstrt=""
else
sstrt=mid(sayyssx,1,posfd-1)
end if
if posfd+len(sssaac)>len(sayyssx) then
enddt=""
else
enddt=mid(sayyssx,posfd+len(sssaac),len(sayyssx)-(posfd+len(sssaac))+1)
end if
sayyssx=sstrt&thzzzf&enddt

need_n2=0
exit for
end if

'--2--
if sssaacc="*" then

if posfd-1<1 then
sstrt=""
else
sstrt=mid(sayyssx,1,posfd-1)
end if
if posfd+len(sssaac)>len(sayyssx) then
enddt=""
else
enddt=mid(sayyssx,posfd+len(sssaac),len(sayyssx)-(posfd+len(sssaac))+1)
end if
sayyssx=sstrt&thzzzf&enddt
need_n2=0
exit for
end if

'--3--
ttrrrue=0
for fdfdfd_scan=1 to aassdakcc+1
ttrrrue=ttrrrue+1
if posfd+len(sssaac)-1++len(sssaacc)+ttrrrue-1>len(sayyssx) then exit for

'以下用于忽略字与字间的空格性的字符,空格性的字符详见konggexx变量的值
kkkgeee=split(konggexx,"$_kongge_$")
for kkkgeeei=0 to ubound(kkkgeee)
if mid(sayyssx,posfd+len(sssaac)-1+ttrrrue,1)=kkkgeee(kkkgeeei) then
fdfdfd_scan=fdfdfd_scan-1
exit for
end if
next
if mid(sayyssx,posfd+len(sssaac)-1+ttrrrue,len(sssaacc))=sssaacc then
fdzi_pos=posfd+len(sssaac)-1+ttrrrue

if posfd-1<1 then
sstrt=""
else
sstrt=mid(sayyssx,1,posfd-1)
end if
if posfd+len(sssaac)>len(sayyssx) then
enddt=""
else
enddt=mid(sayyssx,posfd+len(sssaac),len(sayyssx)-(posfd+len(sssaac))+1)
end if
sayyssx=sstrt&thzzzf&enddt

new_fdzi_pos=fdzi_pos+(len(thzzzf)-len(sssaac))

if new_fdzi_pos-1<1 then
sstrt=""
else
sstrt=mid(sayyssx,1,new_fdzi_pos-1)
end if
if new_fdzi_pos+len(sssaacc)>len(sayyssx) then
enddt=""
else
enddt=mid(sayyssx,new_fdzi_pos+len(sssaacc),len(sayyssx)-(new_fdzi_pos+len(sssaacc))+1)
end if
sayyssx=sstrt&thzzzf&enddt
need_n2=0
exit for
end if
next

if need_n2=0 then exit for

'执行到这,说明是 第四层循环里 dsf|2343|34234|df之类中 的上一项未匹配,而继续下一项,否则已经跳
出本循环,这也就是need_n2变量的作用,当然也有可能再次进入 同一sssaac变量值的 本循环,如果
have_di2cen=1的话
next
end if
'执行到这说明第四层循环时 没找到匹配的脏话
if need_n2=0 then exit for
'执行到这,说明是 第三层循环里 数组元素中 的上一项未匹配,而继续下一项,否则已经跳出本循环,这也
就是need_n2变量的作用,当然也有可能再次进入 同一sssaac变量值的 本循环,如果have_di2cen=1的话
next

if need_n2=1 then '第三层循环 扫描到末尾,没找到匹配的脏话,不用再do while 了
exit do
end if
end if

loop

'第二层循环,针对 "dsf|2343|34234|df"之类中的各元素扫描
next

end if

'第一层循环
next
ND_say_what=sayyssx
end function
'end 智能脏话过滤系统v1.0

%>

<br>
<br><br>
智能脏话过滤系统v1.0 ----by 柏拉图的程序,qq657697290<hr><br>
<form action=a.asp method=post>

<textarea name=aaas cols=50 rows=10><% if request("aaas")="" then%>
你妈d的,我草,2334234234,3434
<%else%>
<%=trim(request("aaas"))%>
<%end if%>
</textarea>
<br>
<input type=submit value="开始智能脏话过滤">

<br><br>
<hr>过滤后的输出:<br>
<font color=#ff0000>
<%
response.write ND_say_what(request("aaas"))
%>
</font>