0

我有一个测试字符串,如:

my $input = "testing &test ₨";
my $output = HTML::Entities::encode_entities($str,"<>&\"'");

所需的输出是

testing &amp;test &#8360;

但是 HTML::Entities::encode_entities 将其编码为

testing &amp;test &amp;#8360;

总而言之,我希望 HTML::Entities 仅在它不代表 HTML 实体编号时才对“&”字符进行编码。

4

1 回答 1

7

您需要先解码字符串,然后对其进行编码

#!/usr/bin/env perl
use strict; use warnings; use v5.10;
use HTML::Entities ();
my $input = "testing &test &#8360;";
$input = HTML::Entities::encode( HTML::Entities::decode( $input ) );
say $input;

结果是

testing &amp;test &#x20A8;

20A8是 的十六进制版本8360

于 2013-01-28T23:47:14.677 回答