如何为HTML编码字符串?

Phi*_*ord 20 perl html-encode

我正在寻找一种在Perl中对字符串/对象进行HTML编码的简单方法.使用的附加包越少越好.

fri*_*edo 30

HTML :: Entities是你的朋友.

use HTML::Entities;
my $encoded = encode_entities( "foo & bar & <baz>" );
Run Code Online (Sandbox Code Playgroud)


bri*_*foy 27

当第一个回答这个问题时,HTML :: Entities是大多数人可能使用的模块.它是纯Perl,默认情况下会转义HTML保留字符><'"&和宽字符.

最近,HTML :: Escape出现了.它有XS和纯Perl.如果您使用的是XS版本,它的速度比HTML :: Entities快十倍.但是,它只会逃脱><'"&,无法更改默认值.这是与XS版本的区别:

Benchmark: timing 10000 iterations of html_entities, html_escape...
html_entities: 14 wallclock secs (14.09 usr +  0.01 sys = 14.10 CPU) @ 709.22/s (n=10000)
html_escape:  1 wallclock secs ( 0.68 usr +  0.00 sys =  0.68 CPU) @ 14705.88/s (n=10000)
Run Code Online (Sandbox Code Playgroud)

这里是纯粹Perl版本的公平战斗:

Benchmark: timing 10000 iterations of html_entities, html_escape...
html_entities: 14 wallclock secs (13.79 usr +  0.01 sys = 13.80 CPU) @ 724.64/s (n=10000)
html_escape:  7 wallclock secs ( 7.57 usr +  0.01 sys =  7.58 CPU) @ 1319.26/s (n=10000)
Run Code Online (Sandbox Code Playgroud)

您可以在Surveyor :: Benchmark :: HTMLEntities中获得这些基准测试.我解释了如何使用Surveyor :: App 分发基准测试.