War*_*ren 3 html delphi parsing
我有html源包含大约1000个微博(每行一条推文).大多数推文如下所示.我正在使用delphi备忘录尝试使用Pos函数和删除函数来删除html标记但是失败了.
<div id='tweetText'> RT <a onmousedown="return touch(this.href,0)" href="http://twitter.com/HighfashionUK">@HighfashionUK</a> RT: Surprise goody bag up 4 grabs, Ok. <a onmousedown="return touch(this.href,0)" href="http://plixi.com/p/57846587">http://plixi.com/p/57846587</a> when we get 150</div>
Run Code Online (Sandbox Code Playgroud)
我想剥离html标记,只有:
RT: Surprise goody bag up 4 grabs, Ok. http://plixi.com/p/57846587 when we get 150
Run Code Online (Sandbox Code Playgroud)
如何在delphi中提取这样的文本?
非常感谢你提前.
更新:
Cosmin Prund是对的.我错误地跳过了一部分.我想要的是:
RT @HighfashionUK RT: Surprise goody bag up 4 grabs, Ok. http://plixi.com/p/57846587 when we get 150
Run Code Online (Sandbox Code Playgroud)
Cosmin Prund很棒.
由于所有HTML标记都在<和之间>,因此剥离标记的例程可以像这样简单地编写.希望这是你想要的,因为正如你在我的评论中看到的那样,有一个问题@HighfashionUK- 你的例子跳过了,不知道为什么.
function StripHtmlMarkup(const source:string):string;
var i, count: Integer;
InTag: Boolean;
P: PChar;
begin
SetLength(Result, Length(source));
P := PChar(Result);
InTag := False;
count := 0;
for i:=1 to Length(source) do
if InTag then
begin
if source[i] = '>' then InTag := False;
end
else
if source[i] = '<' then InTag := True
else
begin
P[count] := source[i];
Inc(count);
end;
SetLength(Result, count);
end;
Run Code Online (Sandbox Code Playgroud)