1

Perlでは、utf-8文字を含む文字列をHTMLに変換して、そのような文字を&...;に変換するにはどうすればよいですか。?

4

2 に答える 2

3

まず、空のパターンで分割して、単一の文字のリストを取得します。次に、ASCIIの場合は各文字をそれ自体にマップし、そうでない場合はそのコードをマップします。

use Encode qw( decode_utf8 );

my $utf8_string = "\xE2\x80\x9C\x68\x6F\x6D\x65\xE2\x80\x9D";
my $unicode_string = decode_utf8($utf8_string);

my $html = join q(),
    map { ord > 127 ? "&#" . ord . ";"
                    : $_
        } split //, $unicode_string;
于 2012-10-08T23:16:09.473 に答える
2

印刷できず、低ASCIIではないすべてのシンボル(つまり、\ x20- \ x7F領域の外側にあるもの)を、ord必要なHTMLエンティティの書式設定の簡単な計算に置き換えるだけです。Perl正規表現/eには、置換をコードとして扱う必要があることを示すフラグがあります。

use utf8;
my $str = "testТест"; # This is correct UTF-8 string right in the code
$str =~ s/([^[\x20-\x7F])/"&#" . ord($1) . ";"/eg;
print $str;
# testТест
于 2013-07-16T15:54:21.703 に答える