过滤查询条件LIKE里面的关键字符
2008-11-19 13:50
351 查看
/// <summary> /// 消除用户录入的恶意字符串。用户录入的查询条件应先用此函数过滤 /// </summary> /// <param name="text">用户录入的字符串</param> /// <param name="maxLength">字符串的最大长度</param> /// <returns>清除恶意字符串后的结果</returns> public static string InputText(string text, int maxLength) { text = text.Trim(); if (string.IsNullOrEmpty(text)) return string.Empty; if (text.Length > maxLength) text = text.Substring(0, maxLength); text = Regex.Replace(text, "[\\s]{2,}", " "); //two or more spaces text = Regex.Replace(text, "(<[b|B][r|R]/*>)+|(<[p|P](.|\\n)*?>)", "\n"); //<br> text = Regex.Replace(text, "(\\s*&[n|N][b|B][s|S][p|P];\\s*)+", " "); // text = Regex.Replace(text, "<(.|\\n)*?>", string.Empty); //any other tags text = text.Replace("'", "''"); /*我们都知道SQL Server查询过程中,单引号“'”是特殊字符,所以在查询的时候要转换成双单引号“''”。 但这只是特殊字符的一个,在实际项目中,发现对于like操作还有以下特殊字符:下划线“_”,百分号“%”,方括号“[]”以及尖号“^”。 在实际进行处理的时候,对于=操作,我们一般只需要如此替换: ' -> '' 对于like操作,需要进行以下替换(注意顺序也很重要) [ -> [[] (这个必须是第一个替换的!!) % -> [%] (这里%是指希望匹配的字符本身包括的%而不是专门用于匹配的通配符) _ -> [_] ^ -> [^] */ text = text.Replace("[", "[[]"); text = text.Replace("%", "[%]"); text = text.Replace("_", "[_]"); text = text.Replace("[^]", "[[^]]"); return text; }
相关文章推荐
- 用户信息:奇偶数隔行变色,选中行变色,鼠标变小手样式;姓名查询条件,过滤敏感字符;下拉列表排序;非空验证添加信息;点击按钮删除
- JN项目-查询条件过滤特殊字符
- Java 过滤Oracle的like条件的特殊字符
- 隔行变色,选中变色,鼠标变小手样式;姓名查询条件 过滤敏感字符 下拉列表排序 非空验证添加信息 点击按钮删除
- 抛砖引玉:MySQL数据库中,在Spring+Hibernate条件下,比较like和=查询日期的效率
- Hibernate里面如何使用DetachedCriteriaCriteria 实现多条件分页查询
- django tastypie filtering 数据过滤(条件查询)
- 关于 hibernate 逻辑删除 默认查询过滤条件问题(java set 条件)
- 关于sqlserver字符类型查询条件区分大小写
- mongo查询过滤条件java实例($and,$or,$eq,$ne)
- mongo查询过滤条件java实例($and,$or,$eq,$ne)
- myBatis 操作 mysql时,使用 like 关键进行模糊查询的方法
- 图形查询时过滤掉条件显示中不显示的元素
- Oracle中like查询下划线等特殊字符的处理
- django model filter 条件过滤,及多表连接查询、反向查询,某字段的distinct
- XsqlFilterResult----动态生成sql语句的类,过滤一些为空的查询条件
- Hibernate HQL基础 限定查询条件(这里面有各种条件查询)
- 循环获取Query中的查询条件,过滤条件
- SQL查询用like搜索通配符字符
- mysql like子句 多条件查询