2010-11-13 63 views
1

我在反sql注入例程中看到了这一行,那么它的含义是什么?以下ereg_replace的含义是什么?

ereg_replace('(%)', '\\\1', $str); 
+0

一旦你对'ereg_replace'有了很好的理解,你应该立即转向'preg_replace'。 'ereg'函数现在已经过时。 – stillstanding 2010-11-13 05:15:09

回答

3

它用\%更换%逃逸百分比符号。 PHP有逃脱字符的更好的方法,即addcslashes

addcslashes($str, '%');` 

还要注意的是功能的额日格一族的青睐其预浸当量已被弃用。

+0

为什么我们用%替换%?该例程已经调用了real_escape_string,实际上它添加了这行代码,然后自己调用super_escape_string。 – Jichao 2010-11-13 05:08:51

+0

@Jichao因为'%'在SQL查询中有特殊的含义(它就像是模式匹配的通配符),而'\%'总是一个字面百分号。 – meagar 2010-11-13 05:10:00

+0

我同意参数化语句的建议。但是,['mysql_real_escape_string'](http://php.net/manual/en/function.mysql-real-escape-string.php)不处理'%'(请参见上一个注释)。对于准备好的陈述,它可能取决于图书馆。我并不是说这个正则表达式是正确的,尽管(它绝对是非常详细的)。 – 2010-11-13 05:11:15

相关问题