0

假设您有<INPUT>一个用户名文本,他们决定输入

Johnny's Pizza

这在数据库中保存为

Johnny's Pizza

但是如果用户决定编辑,我会重新填充文本<INPUT>如下

echo form_input('name', htmlspecialchars($name, ENT_QUOTES, 'UTF-8'));

这将显示为

Johnny&#039;s Pizza

在输入字段内。

PHP.net 在这里有一条评论建议使用

echo form_input('name', htmlspecialchars($name, ENT_QUOTES, 'UTF-8', FALSE));

也就是说,FALSE指的是$double_encoding,但我仍然得到

Johnny&#039;s Pizza

在输入字段中。

有没有办法绕过这种双重编码?这是可以在仍在使用时修复的东西ENT_QUOTES吗?

使用 Codeigniter 2.0.3。

4

1 回答 1

2

使用htmlspecialchars是正确的方法,如果直接输出到页面中,不会给出你描述的结果。

大概该form_input函数希望接收文本而不是 HTML,因此它htmlspecialchars自己运行。如果是这样,解决方案是只传递文本而不首先对 HTML 的值进行编码。

于 2011-12-03T17:20:49.570 回答