我有一个包含许多数字实体的HTML文件。我想将它们从使用十进制数字改为十六进制数字。例如:我希望–
(简称)更改为–
。
如何使用Perl执行此操作?
我尝试使用以下代码:
use String::HexConvert ':all';
my $text = "this is text–example";
print ascii_to_hex($text);
它将转换所有字符。我想仅转换–
。
答案 0 :(得分:3)
这样可以解决问题:
$html =~ s/&#([0-9]+);/ sprintf("&#x%x;", $1) /eg;
(\d
匹配太多字符。)
答案 1 :(得分:0)
试试这个:
$text =~ s/\&#(\d+);/"&#x".sprintf("%x",$1).";"/eg
答案 2 :(得分:0)
要从十六进制转换为十进制:
$html =~ s/&#(x[0-9A-Fa-f]+);/ sprintf("&#%d;", hex($1)) /eg;