当输入中允许html实体时,如何防止html实体的双重编码

Bob*_*Bob 4 html perl encode cpan

如何防止html实体的双重编码,或以编程方式修复它们?

我正在使用HTML :: Entities perl模块中的encode()函数来编码用户输入中的HTML实体.这里的问题是我们还允许用户直接输入HTML实体,这些实体最终被双重编码.

例如,用户可以输入:

Stackoverflow & Perl = Awesome…

这最终被编码为

Stackoverflow & Perl = Awesome…

这在浏览器中呈现为

Stackoverflow & Perl = Awesome…

我们希望将其渲染为

Stackoverflow & Perl = Awesome...

有没有办法防止这种双重编码?或者是否有一个模块或代码片段可以轻松纠正这些双重编码问题?

任何帮助是极大的赞赏!

Eri*_*rom 6

您可以先解码字符串:

my $input = from_user();

my $encoded = encode_entities( decode_entities $input );
Run Code Online (Sandbox Code Playgroud)