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