假设您有一个用户姓名的文字<INPUT>
,他们决定输入
Johnny's Pizza
将其保存在DB中
Johnny's Pizza
但如果用户决定进行编辑,我会按以下方式重新填充文本<INPUT>
echo form_input('name', htmlspecialchars($name, ENT_QUOTES, 'UTF-8'));
将显示为
Johnny's Pizza
在输入字段内。
PHP.net有comment here建议使用
echo form_input('name', htmlspecialchars($name, ENT_QUOTES, 'UTF-8', FALSE));
即FALSE
引用$double_encoding
,但我仍然
Johnny's Pizza
在输入字段中。
有没有解决这种双重编码的方法?这是可以在使用ENT_QUOTES
时修复的内容吗?
使用Codeigniter 2.0.3。
答案 0 :(得分:2)
使用htmlspecialchars
是正确的方法,如果直接将其输出到页面中,则不会给出您描述的结果。
假设form_input
函数希望接收文本而不是HTML,因此它本身运行htmlspecialchars
。如果是这样,解决方案是只传递文本而不是首先编码HTML的值。