之前给某个部门做了一个管理工具,数据库用的是Mysql。其中有一段查询用到了rlike,也就是regexp。
如果查询条件写成如下,是获取不到正确的查询结果的
1
|
name
rlike
'd2.7*0.4'
|
正确的形式应当是:
1
|
name
rlike
'd2\\.7\\*0\\.4'
|
这是因为在Mysql中,'.','*',还有'(',')','[',']','?','$','!'等字符都是有特殊含义的,他们需要被转义才能被当作其本身。
在php中,可以使用preg_quote函数对其进行处理
1
2
3
4
|
function
formatRegexp(
$str
)
{
return
mysql_escape_string(preg_quote(
$str
));
}
|
调用此函数获得的字符串就是正确的查询字符串了。
本文转自 ustb80 51CTO博客,原文链接:http://blog.51cto.com/ustb80/1284113,如需转载请自行联系原作者