<分区>
Addslashes 好像有点糊涂了。给定以下两行代码
$name = "Dave's test";
$newName = addslashes($name);
我期望 $newName 是“Dave\'s test”(我的单引号很好地转义了)
但是,我得到的是“Dave\\'s test”(注意双反斜杠)。这与我在 addslashes 上可以找到的所有在线文档都相矛盾 - 这让我很伤心。
我正在通过 error_log 将 addslashes 之前和之后的结果转储到 http 错误日志中...
error_log("before=$name after=$newName");
结果...
before=Dave's test after=Dave\\'s test
注意 - 这是 ajax 过程的一部分,所以我不能真正“回显”结果。
非常感谢任何关于为什么 addslashes 会在反斜杠上加倍的见解。
仅供引用:我在 linux 下使用 PHP 5.2.6,魔术引号关闭。
看起来 error_log 正在内部调用 addslashes。在阅读了对我的原始问题的回应后,我创建了一个非常简单的脚本...
<?php
$name = "Dave's test";
$newName = addslashes($name);
echo "name=$name. newName=$newName";
error_log("name=$name. newName=$newName");
?>
回显结果:
name=Dave's test. newName=Dave\'s test
error_log 的结果:
name=Dave's test. newName=Dave\\'s test
非常感谢所有花时间阅读和评论此问题的人。这是我在 Stack Overflow 上提出的第一个问题,我对回复的速度感到震惊。多么棒的社区啊!