关于PHP的addslashes(), stripslashes(), magic_quotes_gpc(), mysql_real_escape_string()

addslashes()

为 单引号 ('),双引号 ("),反斜杠 (\),NULL 加转义反斜杠。注意,这里不包括 分号(;),如果使用这个来转义,保险起见,在使用addslashes之后,用字符串替换将分号替换成转义的形式(\;)比较好。

stripslashes()

将addslashes处理过的字符串恢复。

mysql_real_escape_string()

可以将MYSQL查询中可能出现的特殊字符都转义掉,所以,在mysql_query()之前,用它处理一下是很不错的,但只在PHP4.3.0之后被支持,并且要注意,

magic_quotes_gpc()

如果magic_quotes_gpc 为 on,所有的 GET、POST 和 COOKIE 数据会被自动运行 addslashes()。

考虑到上述问题之后的转义函数:

function escape_str($str){ 
  if(PHP_VERSION >= "4.3.0"){ 
    if(get_magic_quotes_gpc()) $str=stripslashes($str); 
    $str=mysql_real_escape_string($str); 
  }else{ 
    if(!get_magic_quotes_gpc()) $str=addslashes($str); 
      $str=str_replace($str,";",'\;'); 
  } 
  return $str; 
}

字符串转义图解