【发布时间】:2012-07-18 20:46:13
【问题描述】:
我正在从 HTML 中提取可读文本到一个字符串中,我需要删除 <!-- 和 --> 标记之间的现有文本。实现这一目标的最有效方法是什么?
我现在就是这样:
function RemoveIEScripts(const s: string): string;
var
i: Integer;
InTag: Boolean;
begin
Result := '';
InTag := False;
for i := 1 to Length(s)-3 do
begin
if (s[i] = '<') and (s[i+1] = '!') and (s[i+2] = '-') then
inTag := True
else if (s[i] = '-') and (s[i+1] = '-') and (s[i+2] = '>') then
inTag := False
else if not InTag then
Result := Result + s[i];
end;
end;
有没有更好的方法来做到这一点?
【问题讨论】:
-
从 HTML 中提取文本,省略 HTML 标签的内容是微不足道的,它已经完成了。我的问题是,有时某些网页有小脚本,例如: 提供,并且常规解析不会将它们排除在外。我知道我可以在应用常规 HTML 剥离之前重新解析以查找 序列,但我确信这不是将这些脚本排除在外的最有效方法。
-
要做到这一点,您需要一个 HTML 解析器
-
Miguel,从 HTML 中提取可读文本的任何东西都应该已经剥离 cmets,因为它们从不包含可读文本。为什么你需要一个单独的通行证来摆脱 cmets?任何 HTML 解析器都会自动执行此操作。