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 エンティティ番号を表していない場合にのみ、HTML::Entities で "&" 文字をエンコードする必要があります。

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の 16 進数バージョンです8360

于 2013-01-28T23:47:14.677 に答える