当前位置:  开发笔记 > 编程语言 > 正文

如何解码HTML实体?

如何解决《如何解码HTML实体?》经验,为你挑选了3个好方法。

这是一个快速的Perl问题:

我怎么能转换HTML特殊字符,如ü'正常的ASCII文本?

我从这样的事情开始:

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

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

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



1> Telemachus..:

看看HTML :: Entities:

use HTML::Entities;

my $html = "Snoopy & Charlie Brown";

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

你可以猜出输出.


对于喜欢CLI的人来说,一个衬里:`perl -MHTML :: Entities -le'print decode_entities("¿'")`

2> Mark Fowler..:

上面的答案告诉你如何将实体解码为Perl字符串,但是你也问过如何将它们改成ASCII.

假设这真的是你想要的,你不想要所有的unicode字符,你可以从CPAN 看到Text :: Unidecode模块,将所有那些奇怪的字符重新转换成大致相似的ASCII字符集合:

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

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

# That prints: Bei Jing 



3> ysth..:

请注意,也有十六进制指定的字符.它们看起来像这样:é (E).

使用HTML :: Entities的decode_entities将实体转换为实际字符.要将其转换为ASCII需要更多工作.我已经使用了iconv(perl接口:Text :: Iconv)和transliterate选项,并且过去取得了一些成功.但是,如果您正在处理一组有限的实体,或者您实际上并不需要将其简化为ASCII等效,那么您可能最好限制decode_entities产生的内容或为其提供自定义转换映射.请参阅HTML :: Entities文档.

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有