替换HTML源中的特殊字符

时间:2010-03-10 17:34:32

标签: c++ html special-characters html-entities

我是HTML编码的新手,我知道HTML有一些保留字符供其使用,它还会根据字符代码显示一些字符。例如 - :

Œ  is   Œ
©  is   ©
®  is    ®

我在std :: string中有HTML源代码。我怎样才能将它们解析为实际形式并替换为std :: string?是否有任何可用源代码库或可以使用宏预处理器完成?

3 个答案:

答案 0 :(得分:2)

我建议使用一些可以自动为您进行转换的HTML / XML解析器。正确解析HTML非常困难。如果你坚持自己动手,Boost String Algorithms库提供了有用的替换功能。

答案 1 :(得分:1)

Œ  is   Œ

不,不是。 Œ是'PARTIAL LINE BACKWARD'。 Œ的正确数字实体是ŒŒ

答案 2 :(得分:0)

数字实体的一种方法是使用正则表达式,如&#([0-9]+);,获取数值并将其转换为ASCII字符(可能在C ++中使用sprintf)。

对于命名实体,您需要构建映射。你可以做一个简单的字符串替换来转换为数字,然后使用上面的方法。 W3C在此处有一个表格:http://www.w3.org/TR/WD-html40-970708/sgml/entities.html

但是,如果您尝试在字符串中读取或解析一堆HTML,则应使用HTML解析器。在SO上搜索许多问题。