从C中的html文件中提取纯文本

时间:2013-03-10 05:43:25

标签: html c function

我真的很绝望。我需要提取所有html元素,包括html标签。我想保留纯文本。我需要在C中执行此操作。我不鼓励使用正则表达式。如果我使用字符串函数,它只删除分隔符,而不是内部的字符串。我需要创建一个从html文件中提取纯文本的程序。任何指南将不胜感激如何这样做。谢谢!

2 个答案:

答案 0 :(得分: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);
}

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

答案 1 :(得分:0)

如果你在记事本中打开一个html文件,你会发现它是纯文本(没有图像或任何东西)。 所有标签都以&lt;并以&gt;结束,其他一切都是文本。通过这种方式,您只能读取文件一次,不包括&lt;之间出现的字符。 &GT;符号。

伪代码:

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。