现在的问题是*言论*,大陆这边需要屏蔽一些不良的关键字,在程序不做大改动的情况下,如何能够屏蔽掉一些不良关键字?
大家有什么好的方法,谢谢!
21 个解决方案
#1
顶
#2
可以在conn中加
for each item in request.form
stritem=lcase(server.HTMLEncode(Request.form(item)))
if instr(stritem,要屏蔽的关键字)>0 or instr(stritem,要屏蔽的关键字)>0 response.write ("对不起,请不要输入非法字符!")
response.end
end if
next
for each item in request.form
stritem=lcase(server.HTMLEncode(Request.form(item)))
if instr(stritem,要屏蔽的关键字)>0 or instr(stritem,要屏蔽的关键字)>0 response.write ("对不起,请不要输入非法字符!")
response.end
end if
next
#3
大陆的WEB服务器显示数据的时候用正则将需要屏蔽的关键字替换掉即可
#4
哈哈,我自己想到一种js方法,大家看看可行吗?
<body>
aaaaaaaaaaaaaabbbbbbbbbbbbbbbbbcccccccccdeabde
</body>
<SCRIPT LANGUAGE="javascript">
var KeyArr=new Array(2)
KeyArr[0]=new Array(/a/g,/b/g,/c/g,/d/g);//不良关键字列表
KeyArr[1]=new Array("阿","不","才","的");//替换关键字列表
var doc_txt;
doc_txt=document.body.innerHTML;
var i=0;
for(i in KeyArr[0])
{
doc_txt=doc_txt.replace(KeyArr[0][i],KeyArr[1][i]);
}
document.body.innerHTML=doc_txt;
</Script>
<body>
aaaaaaaaaaaaaabbbbbbbbbbbbbbbbbcccccccccdeabde
</body>
<SCRIPT LANGUAGE="javascript">
var KeyArr=new Array(2)
KeyArr[0]=new Array(/a/g,/b/g,/c/g,/d/g);//不良关键字列表
KeyArr[1]=new Array("阿","不","才","的");//替换关键字列表
var doc_txt;
doc_txt=document.body.innerHTML;
var i=0;
for(i in KeyArr[0])
{
doc_txt=doc_txt.replace(KeyArr[0][i],KeyArr[1][i]);
}
document.body.innerHTML=doc_txt;
</Script>
#5
可以在读出来的时候用一个 replease把关键字换了。
#6
呼呼,类似俺了。把<%...%>中间的弄成一个文件包含在每一页中即可
<form action="" method="post" name="form1" id="form1">
<input name="keyword" type="text" id="keyword" value="" size="30" />
<input type="submit" name="Submit" value="查询" />
</form>
<%
Function Check_InvalidStr()
dim sql_injdata
indata = "*|国民|csdn|其它|*"
indatas = split(indata,"|")
If Request.QueryString<>"" Then
For Each str_Get In Request.QueryString
For i=0 To Ubound(indatas)
if instr(Request.QueryString(str_Get),indatas(i))>0 Then
Response.Write "<Script Language=javascript>alert('系统提示!您使用了禁语!');history.back(-1)</Script>"
Response.end
end if
next
Next
End If
If Request.QueryString<>"" Then
For Each str_Get In Request.form
For i=0 To Ubound(indatas)
if instr(Request.form(str_Get),indatas(i))>0 Then
Response.Write "<Script Language=javascript>alert('系统提示!您使用了禁语!');history.back(-1)</Script>"
Response.end
end if
next
Next
End If
End Function
Check_InvalidStr
%>
<form action="" method="post" name="form1" id="form1">
<input name="keyword" type="text" id="keyword" value="" size="30" />
<input type="submit" name="Submit" value="查询" />
</form>
<%
Function Check_InvalidStr()
dim sql_injdata
indata = "*|国民|csdn|其它|*"
indatas = split(indata,"|")
If Request.QueryString<>"" Then
For Each str_Get In Request.QueryString
For i=0 To Ubound(indatas)
if instr(Request.QueryString(str_Get),indatas(i))>0 Then
Response.Write "<Script Language=javascript>alert('系统提示!您使用了禁语!');history.back(-1)</Script>"
Response.end
end if
next
Next
End If
If Request.QueryString<>"" Then
For Each str_Get In Request.form
For i=0 To Ubound(indatas)
if instr(Request.form(str_Get),indatas(i))>0 Then
Response.Write "<Script Language=javascript>alert('系统提示!您使用了禁语!');history.back(-1)</Script>"
Response.end
end if
next
Next
End If
End Function
Check_InvalidStr
%>
#7
倒,理解错误?
#8
xhbmj(俱往矣,数风流人物还看今朝) 咱俩的思路一样哈哈~~~只是你不需要那么麻烦
function 过滤(文章形参)
参照xhbmj的function
end function
然后再显示文章的时候用<%=过滤(文章内容)%>,这不就好了,简单方便,想在哪里用就在哪里用哈哈
function 过滤(文章形参)
参照xhbmj的function
end function
然后再显示文章的时候用<%=过滤(文章内容)%>,这不就好了,简单方便,想在哪里用就在哪里用哈哈
#9
mark
#10
因为不同的制度,不同的互联网管理条例...
设定如下思路大概更好一些.同地发的,分别正常关键词屏蔽.同上各位楼上的发言.
异地显示的...只有管理认证才能显示.
A地到B地,或B地到A地的记录--->版界检查记录是否通过归属地(管理员)认证.二次认证的,两地都显示,其中一次认证的,只在A或B显示(归属地发言通过关键词屏蔽即默认认证).
设定如下思路大概更好一些.同地发的,分别正常关键词屏蔽.同上各位楼上的发言.
异地显示的...只有管理认证才能显示.
A地到B地,或B地到A地的记录--->版界检查记录是否通过归属地(管理员)认证.二次认证的,两地都显示,其中一次认证的,只在A或B显示(归属地发言通过关键词屏蔽即默认认证).
#11
#12
用正则比较方便且简单一些
建议参考 jasonboy(骑着小猪看夕阳) 的方法
建议参考 jasonboy(骑着小猪看夕阳) 的方法
#13
我觉得还是用replace来替换,会替换回车就知道原理了
#14
也可以使用正则表达式
#15
<%
'过滤不良字符(BadWords)
Function ChkBadWords(fString)
Dim BadWords,bwords,i
BadWords = "非法词1|非法词2|非法词3"
IF(Not(IsNull(BadWords) or IsNull(fString)))THEN
bwords = Split(BadWords, "|")
For i = 0 to UBound(bwords)
fString = Replace(fString, bwords(i), string(Len(bwords(i)),"*"))
Next
ChkBadWords = fString
END IF
End Function
%>
'过滤不良字符(BadWords)
Function ChkBadWords(fString)
Dim BadWords,bwords,i
BadWords = "非法词1|非法词2|非法词3"
IF(Not(IsNull(BadWords) or IsNull(fString)))THEN
bwords = Split(BadWords, "|")
For i = 0 to UBound(bwords)
fString = Replace(fString, bwords(i), string(Len(bwords(i)),"*"))
Next
ChkBadWords = fString
END IF
End Function
%>
#16
方法大家都知道,主要是想一个最优化的方法,在有效性和运行效率方面最好的解决方案.
#17
用replace过滤掉,速度不会很慢的
#18
替换存在一定的问题
用提示信息
用提示信息
#19
replace
#20
帮顶
#21
方法大家都知道,主要是想一个最优化的方法,在有效性和运行效率方面最好的解决方案.
同意hurrayboy() 的
同意hurrayboy() 的
#22
我也赞同读取后替换再输出。
#1
顶
#2
可以在conn中加
for each item in request.form
stritem=lcase(server.HTMLEncode(Request.form(item)))
if instr(stritem,要屏蔽的关键字)>0 or instr(stritem,要屏蔽的关键字)>0 response.write ("对不起,请不要输入非法字符!")
response.end
end if
next
for each item in request.form
stritem=lcase(server.HTMLEncode(Request.form(item)))
if instr(stritem,要屏蔽的关键字)>0 or instr(stritem,要屏蔽的关键字)>0 response.write ("对不起,请不要输入非法字符!")
response.end
end if
next
#3
大陆的WEB服务器显示数据的时候用正则将需要屏蔽的关键字替换掉即可
#4
哈哈,我自己想到一种js方法,大家看看可行吗?
<body>
aaaaaaaaaaaaaabbbbbbbbbbbbbbbbbcccccccccdeabde
</body>
<SCRIPT LANGUAGE="javascript">
var KeyArr=new Array(2)
KeyArr[0]=new Array(/a/g,/b/g,/c/g,/d/g);//不良关键字列表
KeyArr[1]=new Array("阿","不","才","的");//替换关键字列表
var doc_txt;
doc_txt=document.body.innerHTML;
var i=0;
for(i in KeyArr[0])
{
doc_txt=doc_txt.replace(KeyArr[0][i],KeyArr[1][i]);
}
document.body.innerHTML=doc_txt;
</Script>
<body>
aaaaaaaaaaaaaabbbbbbbbbbbbbbbbbcccccccccdeabde
</body>
<SCRIPT LANGUAGE="javascript">
var KeyArr=new Array(2)
KeyArr[0]=new Array(/a/g,/b/g,/c/g,/d/g);//不良关键字列表
KeyArr[1]=new Array("阿","不","才","的");//替换关键字列表
var doc_txt;
doc_txt=document.body.innerHTML;
var i=0;
for(i in KeyArr[0])
{
doc_txt=doc_txt.replace(KeyArr[0][i],KeyArr[1][i]);
}
document.body.innerHTML=doc_txt;
</Script>
#5
可以在读出来的时候用一个 replease把关键字换了。
#6
呼呼,类似俺了。把<%...%>中间的弄成一个文件包含在每一页中即可
<form action="" method="post" name="form1" id="form1">
<input name="keyword" type="text" id="keyword" value="" size="30" />
<input type="submit" name="Submit" value="查询" />
</form>
<%
Function Check_InvalidStr()
dim sql_injdata
indata = "*|国民|csdn|其它|*"
indatas = split(indata,"|")
If Request.QueryString<>"" Then
For Each str_Get In Request.QueryString
For i=0 To Ubound(indatas)
if instr(Request.QueryString(str_Get),indatas(i))>0 Then
Response.Write "<Script Language=javascript>alert('系统提示!您使用了禁语!');history.back(-1)</Script>"
Response.end
end if
next
Next
End If
If Request.QueryString<>"" Then
For Each str_Get In Request.form
For i=0 To Ubound(indatas)
if instr(Request.form(str_Get),indatas(i))>0 Then
Response.Write "<Script Language=javascript>alert('系统提示!您使用了禁语!');history.back(-1)</Script>"
Response.end
end if
next
Next
End If
End Function
Check_InvalidStr
%>
<form action="" method="post" name="form1" id="form1">
<input name="keyword" type="text" id="keyword" value="" size="30" />
<input type="submit" name="Submit" value="查询" />
</form>
<%
Function Check_InvalidStr()
dim sql_injdata
indata = "*|国民|csdn|其它|*"
indatas = split(indata,"|")
If Request.QueryString<>"" Then
For Each str_Get In Request.QueryString
For i=0 To Ubound(indatas)
if instr(Request.QueryString(str_Get),indatas(i))>0 Then
Response.Write "<Script Language=javascript>alert('系统提示!您使用了禁语!');history.back(-1)</Script>"
Response.end
end if
next
Next
End If
If Request.QueryString<>"" Then
For Each str_Get In Request.form
For i=0 To Ubound(indatas)
if instr(Request.form(str_Get),indatas(i))>0 Then
Response.Write "<Script Language=javascript>alert('系统提示!您使用了禁语!');history.back(-1)</Script>"
Response.end
end if
next
Next
End If
End Function
Check_InvalidStr
%>
#7
倒,理解错误?
#8
xhbmj(俱往矣,数风流人物还看今朝) 咱俩的思路一样哈哈~~~只是你不需要那么麻烦
function 过滤(文章形参)
参照xhbmj的function
end function
然后再显示文章的时候用<%=过滤(文章内容)%>,这不就好了,简单方便,想在哪里用就在哪里用哈哈
function 过滤(文章形参)
参照xhbmj的function
end function
然后再显示文章的时候用<%=过滤(文章内容)%>,这不就好了,简单方便,想在哪里用就在哪里用哈哈
#9
mark
#10
因为不同的制度,不同的互联网管理条例...
设定如下思路大概更好一些.同地发的,分别正常关键词屏蔽.同上各位楼上的发言.
异地显示的...只有管理认证才能显示.
A地到B地,或B地到A地的记录--->版界检查记录是否通过归属地(管理员)认证.二次认证的,两地都显示,其中一次认证的,只在A或B显示(归属地发言通过关键词屏蔽即默认认证).
设定如下思路大概更好一些.同地发的,分别正常关键词屏蔽.同上各位楼上的发言.
异地显示的...只有管理认证才能显示.
A地到B地,或B地到A地的记录--->版界检查记录是否通过归属地(管理员)认证.二次认证的,两地都显示,其中一次认证的,只在A或B显示(归属地发言通过关键词屏蔽即默认认证).
#11
#12
用正则比较方便且简单一些
建议参考 jasonboy(骑着小猪看夕阳) 的方法
建议参考 jasonboy(骑着小猪看夕阳) 的方法
#13
我觉得还是用replace来替换,会替换回车就知道原理了
#14
也可以使用正则表达式
#15
<%
'过滤不良字符(BadWords)
Function ChkBadWords(fString)
Dim BadWords,bwords,i
BadWords = "非法词1|非法词2|非法词3"
IF(Not(IsNull(BadWords) or IsNull(fString)))THEN
bwords = Split(BadWords, "|")
For i = 0 to UBound(bwords)
fString = Replace(fString, bwords(i), string(Len(bwords(i)),"*"))
Next
ChkBadWords = fString
END IF
End Function
%>
'过滤不良字符(BadWords)
Function ChkBadWords(fString)
Dim BadWords,bwords,i
BadWords = "非法词1|非法词2|非法词3"
IF(Not(IsNull(BadWords) or IsNull(fString)))THEN
bwords = Split(BadWords, "|")
For i = 0 to UBound(bwords)
fString = Replace(fString, bwords(i), string(Len(bwords(i)),"*"))
Next
ChkBadWords = fString
END IF
End Function
%>
#16
方法大家都知道,主要是想一个最优化的方法,在有效性和运行效率方面最好的解决方案.
#17
用replace过滤掉,速度不会很慢的
#18
替换存在一定的问题
用提示信息
用提示信息
#19
replace
#20
帮顶
#21
方法大家都知道,主要是想一个最优化的方法,在有效性和运行效率方面最好的解决方案.
同意hurrayboy() 的
同意hurrayboy() 的
#22
我也赞同读取后替换再输出。