PHP函数stripcslashes不能按需转换

时间:2019-01-10 12:31:59

标签: php string apache utf-8 special-characters

通常执行echo stripcslashes('Dr\xc3\xa4ger')应该会输出Dräger,但是当我在生产服务器上使用error_log(stripcslashes('Dr\xc3\xa4ger'))执行它时,我只是在Apache错误日志中得到了Dr\xc3\xa4ger

有人可以告诉我为什么吗?

1 个答案:

答案 0 :(得分:2)

这就是发生的情况,stripcslashes('Dr\xc3\xa4ger')确实在完成您要的工作,返回了Dräger。但是,Apache将apparently重新转义,然后再将其写入错误日志,这就是为什么它在此处显示为Dr\xc3\xa4ger的原因。

(我不会建议重新编译Apache以禁用此功能,如在线其他地方所建议的那样。)

任何需要验证此转换正在发生的事情都应包含在您的测试套件中。 (您的测试涵盖了所有依赖于此的内容,我不建议您单独测试内置的PHP函数。)