Addslashes似乎有点混乱.给出以下2行代码
$name = "Dave's test"; $newName = addslashes($name);
我期待 $ newName成为"Dave的测试"(我的单引号很好地逃脱了)
但是,我得到的是"Dave \\'的测试"(注意DOUBLE反斜杠).这与我在addslashes上可以找到的所有在线文档相矛盾 - 并且让我感到非常悲痛.
我通过error_log将addslashes结果转换为http错误日志之前和之后...
error_log("before=$name after=$newName");
结果...
before=Dave's test after=Dave\\'s test
注意 - 这是ajax过程的一部分,所以我无法真正"回应"结果.
任何有关为什么addlashes会在后退上加倍的见解都非常感激.
仅供参考:我在Linux下使用PHP 5.2.6,魔术报价为OFF.
看起来error_log在内部调用了addlashes。阅读了对我的原始问题的回复后,我创建了一个非常简单的脚本...
回声的结果:
name=Dave's test. newName=Dave\'s test
error_log的结果:
name=Dave's test. newName=Dave\\'s test
非常感谢所有花时间阅读和评论此问题的人。这是我对Stack Overflow的第一个问题,响应速度之快让我震惊。多么伟大的社区!