htmlspecialchars 在我的页面中无法在 pdo 对象放置的转义撇号之前删除反斜杠。我假设这是因为我在页面上使用 UTF-8 来显示汉字。我正在尝试显示一个英文段落和一个中文段落。这是我正在使用的代码:
$english=htmlspecialchars($row["english"], ENT_QUOTES, 'UTF-8');
由于某种原因,它总是显示如下:
Don\'t
没有删除转义字符...
'
.htmlspecialchars()
不要剥离斜杠所以,这里是常见的 XY 问题示例(我可以向学生展示这个问题吗?)
要了解出了什么问题,您需要知道接下来的事情:
\
到输入参数- 您需要关闭它们(通过 php.ini 或在php < 5.3 的运行时期间。还要关闭magic_quotes_sybase。htmlspecialchars()
但没有任何属性,因为默认属性是可以的。如果您有 1 或 2 个问题 - 数据库中的数据可能已经损坏,因此您需要重新保存它们,而不要错误添加\
- 为此您可以使用stripslashes()
,但只能重新保存一次数据。在您的系统正常工作期间,您需要使用适当的方法。
不
这首先不应该发生。可能存在更上游的错误(例如,当数据插入数据库时)应该修复,而不是治疗症状。
用这个替换你的变量:
$english = stripslashes(htmlspecialchars($row["english"], ENT_QUOTES, 'UTF-8'));
stripslashes 部分将摆脱斜线,但它可能会取消对字符串的消毒。