急急!!如何过滤脏话?? 急急!!如何过滤脏话??,听说是用可以记事本写,请问该怎么写。或者其他什么好办法?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看你要那种方式实现:可以用字典表,平时注意收集,比对时候like下也可以使用记事本,当然要下载到本地使用比较快,无外乎写个算法,速度要快些,检索就可以了。 把属于脏话的字符串写到建好的一个表里然后把需过滤的字符串取出来,看是否有脏话,字符串.indexOf("脏话")把脏话一条条检查 protected string FilterBadWords(string msg) { //这里读取数据 //string name1 = "web_config"; //string sql = "select webnotext from web_config"; //DataSet ds = mssql.GreatDs(sql, name1); ////这里就是过滤了 //string badwords = ds.Tables[0].Rows[0]["webnotext"].ToString();//上边从数据库中读取要过滤的字符 string badwords = "晕|倒"; string[] tempstr = badwords.Split('|'); string finalstr = msg; for (int i = 0; i < tempstr.Length; i++) { finalstr = finalstr.Replace(tempstr[i], new String('*', tempstr[i].Length)); } return finalstr; } 我以前做过,代码不晓得放哪儿了,思路是,先编辑脏话字典,多个脏话用逗号隔开,得到一个字符串比如abc比如发布一篇文章,用编辑器写,编辑器ID为tt点击发布这篇文章的时候,先把abc以逗号分解用FOR语句循环这篇文章是否有,如果有,就给出提示,就可以了。 代码找到了,希望对有帮助string likeStr = ""; //like 的SQL变量 if (key.IndexOf(',') > 0) //判断是否多个关键词 { string[] keyArr = key.Split(','); //分解多个关键词 for (int i = 1; i <= keyArr.Length; i++) { if (i < keyArr.Length) likeStr += "b_gjz like '%" + keyArr[i - 1] + "%' or "; else likeStr += "b_gjz like '%" + keyArr[i - 1] + "%' "; } } else { likeStr = "b_gjz like '%" + key + "%' "; //只有一个关键词 } 首先自定义一个类,来作为非法词汇的过滤器[C#] 复制 [保存] 保存using System;using System.Text;using System.IO;public class ResponseFilter : Stream{ #region properties Stream responseStream; long position; StringBuilder html = new StringBuilder(); #endregion #region constructor public ResponseFilter(Stream inputStream) { responseStream = inputStream; } #endregion #region implemented abstract members public override bool CanRead { get { return true; } } public override bool CanSeek { get { return true; } } public override bool CanWrite { get { return true; } } public override void Close() { responseStream.Close(); } public override void Flush() { responseStream.Flush(); } public override long Length { get { return 0; } } public override long Position { get { return position; } set { position = value; } } public override long Seek(long offset, System.IO.SeekOrigin direction) { return responseStream.Seek(offset, direction); } public override void SetLength(long length) { responseStream.SetLength(length); } public override int Read(byte[] buffer, int offset, int count) { return responseStream.Read(buffer, offset, count); } #endregion #region write method public override void Write(byte[] buffer, int offset, int count) { string sBuffer = System.Text.UTF8Encoding.UTF8.GetString(buffer, offset, count); //得到非法词汇列表,这个可以在数据库或Web.Config中读取出来 string pattern = @"(非法词汇1|非法词汇2|非法词汇3)"; string[] s = pattern.Split(new string[] { "|" }, StringSplitOptions.RemoveEmptyEntries); foreach (string s1 in s) { sBuffer = sBuffer.Replace(s1, "**"); } byte[] data = System.Text.UTF8Encoding.UTF8.GetBytes(sBuffer); responseStream.Write(data, 0, data.Length); } #endregion}然后再Global.asax文件中,添加如下代码://这个适合多个页一次过处理public void Application_BeginRequest() { string path = HttpContext.Current.Request.Path.ToLower(); string[] paths = new string[] { "/aa/","/bb/" }; foreach (string item in paths) { if (path.StartsWith(item)) { Response.Filter = new ResponseFilter(Response.Filter); break; } }}或者重写某页的Render方法protected override void Render(HtmlTextWriter writer){ StringWriter strWriter = new StringWriter(); base.Render(new HtmlTextWriter(strWriter)); string html = strWriter.ToString(); html = Util.ReplaceInvalidKeyword(html); writer.Write(html);} 三层结构就是MVC把 TreeView导航功能,不用iframe 求NHIBERNATE配置 如何将用户的修改信息写进数据库? 初学者,请教个问题,谢谢~ 问题还没有解决.????重发贴,,,在线等. 如何制作web安装项目 各位大侠救命啊!重连数据库问题! 既然关闭了数据库的连接,为什么SqlDataReader还能读取数据 我有一个网页,有一个textbox框,把内容提交给自己,写到cookies里.然后显示该cooikes.为什么要刷新一次才能显示到东西出来? 急急!!如何过滤脏话?? 向某一个URI发送XML数据并取得返回的数据加以分析?
可以用字典表,平时注意收集,比对时候like下
也可以使用记事本,当然要下载到本地使用比较快,无外乎写个算法,速度要快些,检索就可以了。
然后把需过滤的字符串取出来,看是否有脏话,字符串.indexOf("脏话")
把脏话一条条检查
{
//这里读取数据
//string name1 = "web_config";
//string sql = "select webnotext from web_config";
//DataSet ds = mssql.GreatDs(sql, name1);
////这里就是过滤了
//string badwords = ds.Tables[0].Rows[0]["webnotext"].ToString();
//上边从数据库中读取要过滤的字符
string badwords = "晕|倒";
string[] tempstr = badwords.Split('|');
string finalstr = msg;
for (int i = 0; i < tempstr.Length; i++)
{
finalstr = finalstr.Replace(tempstr[i], new String('*', tempstr[i].Length));
}
return finalstr;
}
思路是,先编辑脏话字典,多个脏话用逗号隔开,得到一个字符串比如abc
比如发布一篇文章,用编辑器写,编辑器ID为tt
点击发布这篇文章的时候,先把abc以逗号分解用FOR语句循环这篇文章是否有,如果有,就给出提示,就可以了。
string likeStr = ""; //like 的SQL变量
if (key.IndexOf(',') > 0) //判断是否多个关键词
{
string[] keyArr = key.Split(','); //分解多个关键词
for (int i = 1; i <= keyArr.Length; i++)
{
if (i < keyArr.Length)
likeStr += "b_gjz like '%" + keyArr[i - 1] + "%' or ";
else
likeStr += "b_gjz like '%" + keyArr[i - 1] + "%' ";
}
}
else
{
likeStr = "b_gjz like '%" + key + "%' "; //只有一个关键词
}
[C#] 复制 [保存] 保存using System;
using System.Text;
using System.IO;
public class ResponseFilter : Stream
{
#region properties
Stream responseStream;
long position;
StringBuilder html = new StringBuilder(); #endregion
#region constructor
public ResponseFilter(Stream inputStream)
{
responseStream = inputStream;
} #endregion
#region implemented abstract members
public override bool CanRead
{
get { return true; }
} public override bool CanSeek
{
get { return true; }
} public override bool CanWrite
{
get { return true; }
} public override void Close()
{
responseStream.Close();
} public override void Flush()
{
responseStream.Flush();
} public override long Length
{
get { return 0; }
} public override long Position
{
get { return position; }
set { position = value; }
} public override long Seek(long offset, System.IO.SeekOrigin direction)
{
return responseStream.Seek(offset, direction);
} public override void SetLength(long length)
{
responseStream.SetLength(length);
} public override int Read(byte[] buffer, int offset, int count)
{
return responseStream.Read(buffer, offset, count);
} #endregion
#region write method
public override void Write(byte[] buffer, int offset, int count)
{
string sBuffer = System.Text.UTF8Encoding.UTF8.GetString(buffer, offset, count); //得到非法词汇列表,这个可以在数据库或Web.Config中读取出来 string pattern = @"(非法词汇1|非法词汇2|非法词汇3)";
string[] s = pattern.Split(new string[] { "|" }, StringSplitOptions.RemoveEmptyEntries); foreach (string s1 in s)
{
sBuffer = sBuffer.Replace(s1, "**");
} byte[] data = System.Text.UTF8Encoding.UTF8.GetBytes(sBuffer);
responseStream.Write(data, 0, data.Length);
} #endregion}
然后再Global.asax文件中,添加如下代码:
//这个适合多个页一次过处理public void Application_BeginRequest()
{
string path = HttpContext.Current.Request.Path.ToLower();
string[] paths = new string[]
{
"/aa/","/bb/"
};
foreach (string item in paths)
{
if (path.StartsWith(item))
{
Response.Filter = new ResponseFilter(Response.Filter);
break;
}
}
}
或者重写某页的Render方法
protected override void Render(HtmlTextWriter writer)
{
StringWriter strWriter = new StringWriter();
base.Render(new HtmlTextWriter(strWriter));
string html = strWriter.ToString();
html = Util.ReplaceInvalidKeyword(html);
writer.Write(html);
}