如何解码 HTML 实体?

新手上路,请多包涵

这是一个快速的 Perl 问题:

如何将 ü' 等 HTML 特殊字符转换为普通的 ASCII 文本?

我从这样的事情开始:

 s/\&#(\d+);/chr($1)/eg;

并且可以为所有 HTML 字符编写它,但是像这样的功能可能已经存在了?

请注意,我不需要完整的 HTML->Text 转换器。我已经用 HTML::Parser 解析了 HTML。我只需要用我得到的特殊字符转换文本。

原文由 Frank 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 371
2 个回答

看看 HTML::Entities

 use HTML::Entities;

my $html = "Snoopy & Charlie Brown";

print decode_entities($html), "\n";

你可以猜出输出。

原文由 Telemachus 发布,翻译遵循 CC BY-SA 2.5 许可协议

上面的答案告诉您如何将实体解码为 Perl 字符串,但您还询问了如何将它们更改为 ASCII

假设这确实是您想要的并且您不想要所有 unicode 字符,您可以查看 Text::Unidecode 模块从 CPAN 到 Zap 所有这些奇怪的字符回到一个大致相似的 ASCII 字符集合:

 use Text::Unidecode qw(unidecode);
use HTML::Entities qw(decode_entities);

my $source = '北亰';
print unidecode(decode_entities($source));

# That prints: Bei Jing

原文由 Mark Fowler 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题