Perl中将Perl中的特殊符号"&'<>
转换为实体" & ' < >
的最简单方法是什么?编写这样的函数很容易,但我认为这个问题已经解决了很多次,并且不需要编写自己的函数。
sub add_entities {
my ($text) = @_;
$text =~ s/&/&/g;
$text =~ s/"/"/g;
$text =~ s/'/'/g;
$text =~ s/</</g;
$text =~ s/>/>/g;
return $text;
}
sub remove_entities {
my ($text) = @_;
$text =~ s/"/"/g;
$text =~ s/&/&/g;
$text =~ s/'/'/g;
$text =~ s/</</g;
$text =~ s/>/>/g;
return $text;
}
答案 0 :(得分:0)
你永远不需要remove_entities
。您的解析器不应返回任何实体。好像你有一个可怕的破解者。我推荐使用XML :: LibXML。
add_entities
XML也是如此。 XML编写库将为您处理所有这些。您也可以使用XML :: LibXML,但XML :: Writer更易于用于此任务。
请注意,您的两个例程都非常糟糕。 add_entities
不考虑字符集。 remove_entities
不处理基本XML规范之外的数字和实体。