繁体   English   中英

避免双重编码 <INPUT> 使用htmlspecialchars时

[英]Avoiding double encoding in <INPUT> while using htmlspecialchars

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

Johnny's Pizza

这保存在DB中

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。

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

据推测, form_input函数希望接收文本而不是HTML,因此它本身运行htmlspecialchars 如果是这样,解决方案是只传递文本而不是首先编码HTML的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM