Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Tags aus HTML-Code entfernen (https://www.delphipraxis.net/22573-tags-aus-html-code-entfernen.html)

Gambit 19. Mai 2004 14:03


Tags aus HTML-Code entfernen
 
Moin,

ich habe hier folgenden Code, mit dem ich Tags aus HTML-Code entfernen möchte:

Delphi-Quellcode:
While containsTags = True do begin
      If (AnsiContainsText(HTMLCode, '<')) and (AnsiContainsText(HTMLCode, '>')) then begin
        containsTags:= True;
        Pos1:= AnsiPos('<', HTMLCode);
        Pos2:= AnsiPos('>', HTMLCode);
        Delete(HTMLCode, Pos1, Pos2-Pos1+1);
      end else containsTags:= False;
    end;
Das funzt ganz gut, versagt aber mit einer Endlosschleife, wenn der HTML-Code fehlerhaft ist, also zb. mitten im Text nach anderen Tags ein br> (hier fehlt die spitze Klammer auf) steht und noch weitere Tags folgen.

Beispiel:

<td colspan=3>F.R.I.E.N.D.S - Die Serie ist das TV-Phänomen der letzten Jahre. Die Geschichten von sechs Freunden, die in New York Liebe und Leben meistern, hat eine weltweite Fan-Gemeinde. Kein Wunder, daß die Besetzung immer noch die selbe ist, wie beim Start im Jahre 1994.



b>Episoden:[/b] // Hier der Fehler im HTML-Code
[*]Durch den Wind
[*]Ist das Leben nicht schlecht?
[*]Im Namen der Männlichkeit

Ergebnis der Routine oben ist eine Endlosschleife.

Hat da jemand ne Idee?

Gruß

Gambit

mirage228 19. Mai 2004 14:06

Re: Tags aus HTML-Code entfernen
 
Hi,

ist zwar nicht so schnell, aber du könntest mit StringReplace und die HTML-Tag durch '' ersetzen.

Oder du schaust dich nach einem Hier im Forum suchenHTML Parser oder einer RegEx-Lib (http://regexpstudio.com/ z.B.) um.

mfG
mirage228

SirThornberry 19. Mai 2004 14:11

Re: Tags aus HTML-Code entfernen
 
Zu gleichem hab ich gestern auch ne Funktion geschrieben. Du musst einfach nur prüfen ob ">" auch nach "<" kommt und nicht vorher

Hier der source (der auf jeden Fall verbesserungswürdig ist)
Delphi-Quellcode:
function TForm1.fRemoveTags(AText: String): String;
var LStart, LEnd: Integer;
begin
  LStart := pos('<', AText);
  LEnd := 0;
  if LStart > 0 then
  begin
    LStart := LStart + 1;
    LEnd := PosEx('>', AText, LStart);
  end;
  while (LStart > 0) and (LEnd > LStart) do
  begin
    AText := copy(AText, 1, LStart - 2) + copy(AText, LEnd + 1, length(AText));
    LStart := pos('<', AText);
    if LStart > 0 then
    begin
      LStart := LStart + 1;
      LEnd := PosEx('>', AText, LStart);
    end;
  end;
  result := AText;
end;

Meflin 19. Mai 2004 15:32

Re: Tags aus HTML-Code entfernen
 
in der delphi-source library findet sich uach ein beitrag dazu!
Klick

Gambit 19. Mai 2004 17:18

Re: Tags aus HTML-Code entfernen
 
Besten Dank für die Tipps. Wobei ich das mit dem StringReplace noch nicht so ganz begriffen habe. Woher weiß ich denn was in den Tags steht? StringReplace(AText, '<*>', '') geht ja wohl nicht, oder?

Gruß

Gambit

Meflin 19. Mai 2004 18:36

Re: Tags aus HTML-Code entfernen
 
bei der lösung müsstest du soweit ich das verstanden habe alle tags einzeln entfernen. erst alle [b] dann alle [i] dann alle... und zwar jedes manuell!

moritz 19. Mai 2004 18:43

Re: Tags aus HTML-Code entfernen
 
Stichwort Reguläre Ausdrücke - Dazu sollte sich genug finden!

Gambit 19. Mai 2004 18:43

Re: Tags aus HTML-Code entfernen
 
Achso...naja...aber die Lösung vom Sir Thornberry funzt auch gut, wobei man da vielleicht auch mit "Delete" arbeiten könnte anstelle der Concatenation...

gruß

Gambit

Gambit 19. Mai 2004 18:48

Re: Tags aus HTML-Code entfernen
 
Zitat:

Zitat von Onz
Stichwort Reguläre Ausdrücke - Dazu sollte sich genug finden!

Ich weiß wohl, was ein regulärer Ausdruck ist, aber nicht, wie ich da einen einbauen sollte...

Gruß

Gambit

moritz 19. Mai 2004 18:50

Re: Tags aus HTML-Code entfernen
 
[google]Reguläre Ausdrücke Delphi[/google]


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:08 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz