避免 中的双重编码使用 htmlspecialchars 时

发布于 2024-12-19 17:23:31 字数 849 浏览 2 评论 0原文

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

Johnny's Pizza

This is saves in DB as

Johnny's Pizza

但如果用户决定编辑,我会重新填充文本 ; 如下

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

,将显示为

Johnny's Pizza

输入字段内。

PHP.net 有一个这里的评论建议使用

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

它, FALSE 指的是 $double_encoding,但我仍然进入

Johnny's Pizza

输入字段。

有没有办法解决这种双重编码?这是可以在仍然使用 ENT_QUOTES 的情况下修复的问题吗?

使用 Codeigniter 2.0.3。

Say you have a text <INPUT> for a user's name and they decide to type in

Johnny's Pizza

This is saved in DB as

Johnny's Pizza

But if the user decides to edit, I repopulate the text <INPUT> as follows

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

which will show as

Johnny's Pizza

inside the input field.

PHP.net has a comment here suggesting to use

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

that is, FALSE referring to $double_encoding, but I still get

Johnny's Pizza

in the input field.

Is there a way around this double encoding? Is this something that can be fixed while still using ENT_QUOTES?

Using Codeigniter 2.0.3.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

多像笑话 2024-12-26 17:23:31

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

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

Using htmlspecialchars is the correct approach, and won't give the result you describe if you output it directly into the page.

Presumably the form_input function expects to receive text and not HTML, so it runs htmlspecialchars itself. If so, the solution is to just pass it text and not encode the value for HTML first.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文