function charcovert($string) {
if(!get_magic_quotes_gpc()) {
$string = str_replace('\'', '\\\'', $string);
} else {
$string = str_replace('\"', '"', $string);
}
return $string;
}这段代码时discuz的
为什么没有开启自动转义就替换 \' 为 \\\'
开启的情况下替换 \" 为 " 呢?
没开启自动转义的情况下为什么不直接用 addslashes()
或者除了转义 \' 还应该转义 \ 和 ' "然后就是开启转义的情况下已经自动转移了为什么还要把 \"转回来呢?
求高人解答
应该是discuz在某处需要这么处理字符串。
$string = str_replace('\'', '\\\'', $string);
这里是把'转为\'.而不是把\'转为\\\'如果已经开启:
$string = str_replace('\"', '"', $string);把被转义的\",转为",也就是取消对双引号的转义