Tagi HTML

Adam Boduch

Wycinanie tagów HTML'a. Nie ma za bardzo co się rozpisywać - oto kod :)

function TMainForm.StripTags(HTML: string): string;
var
  i : Integer;
  TagOpened : Boolean;
begin
  TagOpened := False;
  Result := '';
  for I := 1 to Length(HTML) do
  begin
    if HTML[i] = '<' then // jezeli znak to <...
    begin
      TagOpened := True; //... zmien wlasciwosc na true
      continue; //...nie rob juz nic
    end
    else if (HTML[i] = '>') then //..jezeli znak to >
    begin
      TagOpened := False; //...wylacz wlasciwosc
      continue;
    end 
    else
     { jezeli wlasciwosc nie jest wlaczona dodaj kolejna
       litere do rezulatatu wykonania tej funkcji }
      if not TagOpened then 
        Result := Result + HTML[i];
  end;
end;

Zasada działania jest prosta: funkcja usuwa wszelkie znaczniki HTML'a ze zmiennej HTML. Jeżeli pętla analizująca tekst napotka na znak rozpoczęcia tagu - < to zmienia wartość zmienne TagOpened na True - jeżeli napotka na znak zakończenia tagu zmienia wartość zmiennej na False. W przeciwnym wypadku jeżeli wartość TagOpened jest FALSE dodaje do rezultatu wykonania kolejną literkę. Na początek możesz nie zrozumieć, ale to naprawdę nie jest nic trudnego. Zwyczajnie program pomija litry, które są zawarte pomiędzy znakami < i >. Wywołanie tej funkcji:

  memHTMLSource.Text := StripTags(memHTMLSource.Text);

memHTMLSource to komponent TMemo z kodem HTML'a.

Źródła programu możesz ściągnąć stąd:

www.4programmers.net/programmes/htmlstrip.zip

4 komentarzy

@ZIOMBER, co to jest noxx_main ?
zobacz to: http://tinyurl.com/hymmv

a co jak, np. :

  • gdy ktos w parametrze umiesci < lub >, np.: <body>ale jaja</body>
  • gdy kots w komentarzu umiesci < lub >, np.: <body>ale jaja</body>

uan

jeszcze czego

Albo ściągnijcie sobie unit noxx_main i użyjcie procedury:

delete_html_tags_in_memo

lub

delete_html_tags_in_richedit