C ++:从字符串中删除所有HTML格式?

时间:2009-06-11 02:48:01

标签: c++ html c decode

我有一个字符串,可能包含br或span ... / span标签或其他HTML字符/实体。我想要一种强大的方法来剥离所有这些并获得剩余的UTF-8字符。理想情况下,这应该是跨平台的。

这样的事情是理想的:

http://snipplr.com/view/15261/python-decode-and-strip-html-entites-to-unicode/

但也删除了标签。

3 个答案:

答案 0 :(得分:2)

您的要求有多严格?一个简单的两国FSA应该做。从READCHAR状态开始。每当你读''<'在该状态下,转换到READTAG状态;否则,将字符写入结果字符串。每当您处于READTAG状态并读取'>'时,请转换回READCHAR状态。

编辑糟糕。错过了关于实体的部分。你也可以获得READENTITY状态。当您转换它时,您还可以将代码转换为相应的UTF-8字符。

答案 1 :(得分:1)

我不清楚你想要什么。

输入: 这是一个字符串

文本&在许多行“

这个输出应该是:

1) This is a string <br> <br /> of text & on many lines "   (Replace &amp; with & and &quot; with ") 
2) This is a string of text & on many lines "

答案 2 :(得分:0)

您想简单地删除元素,还是将HTML转换为纯文本?

选项1:

如果您只想删除所有出现的内容,可以使用正则表达式搜索并替换。

选项2:

如果您真正想要做的是采用具有格式化的页面并将其转换为纯文本,我能想到的最简单和最健壮的方法是使用浏览器或某些浏览器引擎来实际解析HTML并从中提取文本。

IOW,这相当于将网页从浏览器复制到剪贴板中,然后将其粘贴到记事本中。