0

我真的很绝望。我需要提取所有 html 元素,包括 html 标签。我只想保留纯文本。我需要在 C 中执行此操作。我不鼓励使用 Regex。如果我使用字符串函数,它只会删除 delimiters ,而不是里面的字符串。我需要创建一个从 html 文件中提取纯文本的程序。任何指南都将不胜感激。谢谢!

4

2 回答 2

1

这是您的起点:

void remove_html(char* str) {
    char* html_str = str;
    while(*str) {
        if(*html_str == '<')
            while(*html_str && *html_str++ != '>');
        *str++ = *html_str++; 
    }
}

int main() {
  char foo[] = "hello <p>friends<b>!</b></p>";
  remove_html(foo);
  puts(foo);
}

它只剥离了角度语法 - 不进行任何解析。此外,它不会转换转义字符。

于 2013-03-10T05:54:06.830 回答
0

如果你在记事本中打开一个 html 文件,你会发现它是纯文本(没有图像或任何东西)。所有标签都以 < 开头并以 > 结尾,其他都是文本。这样,您可以只读取一次文件,不包括出现在 < > 符号之间的字符。

伪代码:

bool intag=false;
for (i=0;i<filesize;i++) {
    char c = readchar();
    if (c=='<') intag=true;
    if (!intag) writechar(c);
    if (c=='>') intag=false;

这个逻辑应该适用于大多数情况,尽管您可能需要做更多的工作来处理缩进文本以及页面上可能的任何 javascript。

于 2013-03-10T05:53:28.327 回答