function StripHTMLTags(const strHTML: string): string;
var
P: PChar;
InTag: Boolean;
i, intResultLength: Integer;
begin
P := PChar(strHTML);
Result := '';
InTag := False;
repeat
case P^ of
'<': InTag := True;
'>': InTag := False;
#13, #10: ; {do nothing}
else
if not InTag then
begin
if (P^ in [#9, #32]) and ((P+1)^ in [#10, #13, #32, #9, '<']) then
else
Result := Result + P^;
end;
end;
Inc(P);
until (P^ = #0);
{convert system characters}
Result := StringReplace(Result, '"', '"', [rfReplaceAll]);
Result := StringReplace(Result, ''', '''', [rfReplaceAll]);
Result := StringReplace(Result, '>', '>', [rfReplaceAll]);
Result := StringReplace(Result, '<', '<', [rfReplaceAll]);
Result := StringReplace(Result, '&', '&', [rfReplaceAll]);
{here you may add another symbols from RFC if you need}
end;
function StripHTMLTags(strHTML: string): string;
const crlf='&crlf;';
var
P: PChar;
InTag: Boolean;
i, intResultLength: Integer;
begin
strHTML:=StringReplace(strHTML, '<br/>',crlf,[rfReplaceAll, rfIgnoreCase]);
strHTML:=StringReplace(strHTML, '</div>',crlf,[rfReplaceAll, rfIgnoreCase]);
P := PChar(strHTML);
Result := '';
InTag := False;
repeat
case P^ of
'<': InTag := True;
'>': InTag := False;
#13, #10: ; {do nothing}
else
if not InTag then
begin
if (P^ in [#9, #32]) and ((P+1)^ in [#10, #13, #32, #9, '<']) then
else
Result := Result + P^;
end;
end;
Inc(P);
until (P^ = #0);
{convert system characters}
Result := StringReplace(Result, '"', '"', [rfReplaceAll]);
Result := StringReplace(Result, ''', '''', [rfReplaceAll]);
Result := StringReplace(Result, '>', '>', [rfReplaceAll]);
Result := StringReplace(Result, '<', '<', [rfReplaceAll]);
Result := StringReplace(Result, '&', '&', [rfReplaceAll]);
Result := StringReplace(Result, crlf, #13#10, [rfReplaceAll]);
end;
4条答案
按热度按时间7hiiyaii1#
我不确定在 Delphi 中解析HTML的推荐方法是什么,但如果是我,我会尝试捆绑一个html2text的副本(或者是同名的旧C++ program,或者是较新的Python program),并生成对其中一个的调用。
你可以使用py2exe将Python html2text转换为可执行文件。这两个html2text程序都是根据GPL授权的,但只要你将它们的可执行文件与应用捆绑在一起,并根据GPL的限制提供它们的源代码,那么你应该没问题。
72qzrwbm2#
您可以直接使用TIdHttp及其Get方法,而不是使用TWebBrowser。
你得到html字符串回来。
9lowa7mx3#
下面是一个很好的简单例程copied from Scalabium:
然后,您可以轻松地修改它,以完全按照您的需要进行操作。
cyej8jka4#
对以前用于创建多行文字的函数进行了轻微增强