要测试很简单,新建一个gbk的网页,直接运行
echo addslashes("?好"); 输出的结果却是 ?\好 ,在utf-8下面是没问题的,我的php是5.4.4版本。
回复讨论(解决方案)
确实有这样的问题哦。
暂无好的对策。建议mysql_real_escape_string等函数处理。
不是BUG,addslashes 只用于单字节字符。况且他并没有说是二进制可靠的
你可以用 mysql_real_escape_string
也可以 str_replace("'", "\\'", ...
其实这一点在 php.ini 的注释中已经输的很清楚了
str_replace试过还是不行,一样被检测到有一个反斜杠存在。
那才是奇了怪了!
$s =<<< TXT'?TXT;echo $s, PHP_EOL;$s = str_replace("'", "\\'", $s);echo $s, PHP_EOL;print_r(unpack('H*', $s));'? \'?
Array
(
[1] => 5c27dc5c
)
所以有时候UTF-8能省去很多麻烦...