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