Perlでは、utf-8文字を含む文字列をHTMLに変換して、そのような文字を&...;に変換するにはどうすればよいですか。?
質問する
2073 次
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 に答える