通常执行echo stripcslashes('Dr\xc3\xa4ger')
应该会输出Dräger
,但是当我在生产服务器上使用error_log(stripcslashes('Dr\xc3\xa4ger'))
执行它时,我只是在Apache错误日志中得到了Dr\xc3\xa4ger
。
有人可以告诉我为什么吗?
答案 0 :(得分:2)
这就是发生的情况,stripcslashes('Dr\xc3\xa4ger')
确实在完成您要的工作,返回了Dräger
。但是,Apache将apparently重新转义,然后再将其写入错误日志,这就是为什么它在此处显示为Dr\xc3\xa4ger
的原因。
(我不会不建议重新编译Apache以禁用此功能,如在线其他地方所建议的那样。)
任何需要验证此转换正在发生的事情都应包含在您的测试套件中。 (您的测试涵盖了所有依赖于此的内容,我不建议您单独测试内置的PHP函数。)