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

ASP
asp实现取得数组中的最大值的代码
asp 将日期格式化为需要的格式
asp 下产生任意位数随机密码的代码
asp下返回以千分位显示数字格式化的数值
asp重定向页面的方法总结
asp下去除数组中重复的项的方法
asp下实现 重新排序数字数组的代码
asp 验证输入网址是否有效并可以访问 与正则验证输入网址
asp验证Ip格式的函数
asp实现生成由数字,大写字母,小写字母指定位数的随机数
asp 格式化sql中的like字符串
asp 实现显示所有的服务器变量值的函数
asp 取得用户真实IP,对代理地址仍然有效的函数
asp 通用数据库连接过程函数
asp 字符串截取函数
asp下实现格式化文件大小以MB显示的函数
asp 下用正则表达式检测邮箱格式的函数
asp 实现检测字符串是否为纯字母和数字组合的函数
asp代码实现检测组件是否安装的函数
asp通过JMAIL实现通用发送函数

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 101 ::
收藏到网摘: 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>