标题:PHP . MySQL . RegExp . 正则表达式 出处:Felix021 时间:Sat, 20 Dec 2008 00:25:34 +0000 作者:felix021 地址:https://www.felix021.com/blog/read.php?1348 内容: 做校赛的报名系统,插入队伍的时候要考虑队名是否重复,于是想到了使用MySQL的正则表达式。 以前虽然一直知道MySQL有正则表达式,但是因为有LIKE在,所以一直还不需要用它。 正好这次有了机会,就去试试吧。 MySQL的关键字 REGEXP 允许在SQL语句中匹配忽略大小写的POSIX正则表达式。 其实MySQL的文档里面写得非常详细了,给出了很多的例子,可以在这里看到 http://dev.mysql.com/doc/refman/5.1/zh/regexp.html 这里主要是记录一下在PHP里面还需要进行怎样的处理: 其实很简单,两个函数: 1。preg_quote() 转义正则表达式中的特殊字符,详情参见 http://cn.php.net/preg_quote 这本来是PHP为PCRE的正则表达式准备的,不过这里也是可以用的。 2。mysql_real_escape_string() 这个函数是用来转义特殊的SQL字符,同时也可以防止SQL注入攻击。 PHP文档的说明为: 本函数将 unescaped_string 中的特殊字符转义,并计及连接的当前字符集,因此可以安全用于 mysql_query()。 它有一个兄弟,mysql_escape_string(),不过不能针对当前字符集进行处理,所以不够安全 另外如果使用mysqli的话,也可以使用mysqli_real_escape_string()。 综合起来就是这样: $team_name = mysql_real_escape_string(preg_quote($team_name)); $query = " SELECT * FROM `teams` WHERE `team_name` REGEXP '{$team_name}' "; 然后再ooxx地去查询吧。。。 Generated by Bo-blog 2.1.0