如何将符号“&'<>转换为实体”& '< >在Perl

时间:2013-10-11 20:18:37

标签: perl

Perl中将Perl中的特殊符号"&'<>转换为实体&quot; &amp; &apos; &lt; &gt;的最简单方法是什么?编写这样的函数很容易,但我认为这个问题已经解决了很多次,并且不需要编写自己的函数。

sub add_entities {
    my ($text) = @_;

    $text =~ s/&/&amp;/g;
    $text =~ s/"/&quot;/g;
    $text =~ s/'/&apos;/g;
    $text =~ s/</&lt;/g;
    $text =~ s/>/&gt;/g;

    return $text;
}

sub remove_entities {
    my ($text) = @_;

    $text =~ s/&quot;/"/g;
    $text =~ s/&amp;/&/g;
    $text =~ s/&apos;/'/g;
    $text =~ s/&lt;/</g;
    $text =~ s/&gt;/>/g;

    return $text;
}

1 个答案:

答案 0 :(得分:0)

你永远不需要remove_entities。您的解析器不应返回任何实体。好像你有一个可怕的破解者。我推荐使用XML :: LibXML。

add_entities XML也是如此。 XML编写库将为您处理所有这些。您也可以使用XML :: LibXML,但XML :: Writer更易于用于此任务。

请注意,您的两个例程都非常糟糕。 add_entities不考虑字符集。 remove_entities不处理基本XML规范之外的数字和实体。