AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

html code parsen

Ein Thema von Matthias-k · begonnen am 10. Feb 2009 · letzter Beitrag vom 10. Feb 2009
Antwort Antwort
Matthias-k

Registriert seit: 7. Jul 2005
Ort: Freiberg
75 Beiträge
 
Delphi 7 Professional
 
#1

html code parsen

  Alt 10. Feb 2009, 14:32
hi leutz,

ich suche verzweifelt ne möglichkeit oder eine kompo, wo ich html quelltext parsen kann.

und zwar brauch ich nur den reinen text. das ansich ist kee großes problem, kann man ja per pos copy usw
rausholen! mein problem an der ganzen sache ist, das es vorkommen kann, das ein "<" oder ">" in dem text vorkommen kann!
ich geb euch mal ein beispiel:

Code:

<div class="sysmsg">23:17:00 [b]<font color="#5a88ff">honigbiene</font> verl&auml;sst den Chat.[/b]</div>
<script type="text/javascript">scroll();</script>
<script type="text/javascript">prescroll();</script>
<script type="text/javascript">parent.updateUser('Delphi', 4, 0, 0);</script><script type="text/javascript">scroll();</script>
<script type="text/javascript">prescroll();</script>
<div class="text" style="color:#0000ff;">(<span style="cursor:pointer;" onclick="parent.clickNick('Delphi',event);" style="color: #0000ff;">Delphi</span>) &lt;&lt;&lt;&lt;>>>>>></div>
<script type="text/javascript">scroll();</script>
<script type="text/javascript">prescroll();</script>

<script type="text/javascript">scroll();</script>
<script type="text/javascript">prescroll();</script>
<script type="text/javascript">parent.updateUser('Delphi', 4, 1, 0);</script><script type="text/javascript">scroll();</script>
<script type="text/javascript">prescroll();</script>
unnötige zeilen wie
Code:
<script type="text/javascript">scroll();</script>
<script type="text/javascript">prescroll();</script>
werden bereits entfernt beim auslesen. gibts irgendwas, was mir nur den reinen text ausgibt?

mfg matthias


Gebt Trollen keine Chance!!!
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#2

Re: html code parsen

  Alt 10. Feb 2009, 14:49
Den folgenden Sourcecode habe ich mal gefunden :
Delphi-Quellcode:
// Extract plain text from html string

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, '&apos;', '''', [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;
erstellt durch Code-Orakel und dem BBCode-Plugin.

Vielleicht hilft er Dir ja weiter.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: html code parsen

  Alt 10. Feb 2009, 15:02
Entweder du nimmst den parser des IE (TWebBrowser -> Document und Einbinden von MSHTML.pas) oder versuchst die Decodierung mit dem HTML-Viewer von PBear
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: html code parsen

  Alt 10. Feb 2009, 15:05
wenn in deinem zu parsenden wirklich außerhalb von Tags "<" und ">" vorkommen ist es kein wirklicher HTML-Code. Da hat sich irgendjemand nicht an Standards gehalten.
In oben gezeigtem Fall kann es sogar ein Sicherheitsrisiko werden da es so ausiseht als ob man damit anderen Leuten im Chat HTML-Code vorsetzen kann und somit auch Scripte.

Wenn man das ganze trotzdem parsen will braucht man eigentlich nur mit dem Gedanken ran gehen: Woran erkenne ich als Mensch das diese "<" und ">" in bestimmten Fällen kein einleiten oder schließen eines Tags ist.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Matthias-k

Registriert seit: 7. Jul 2005
Ort: Freiberg
75 Beiträge
 
Delphi 7 Professional
 
#5

Re: html code parsen

  Alt 10. Feb 2009, 18:38
ich hab mit eurer hilfe eine ganz nützliche function gefunden:

Delphi-Quellcode:
function HtmlToText(const _html: string): string;var WebBrowser: TWebBrowser;
   Document: IHtmlDocument2;
   Doc: OleVariant;
   v: Variant;
   Body: IHTMLBodyElement;
   TextRange: IHTMLTxtRange;
begin
   Result := '';

   WebBrowser := TWebBrowser.Create(nil);
   try
     Doc := 'about:blank';
     WebBrowser.Navigate2(Doc);
     Document := WebBrowser.Document as IHtmlDocument2;

     if (Assigned(Document)) then
     begin
       v := VarArrayCreate([0, 0], varVariant);
       v[0] := _html;
       Document.Write(PSafeArray(TVarData(v).VArray));
       Document.Close;

       Body := Document.body as IHTMLBodyElement;
       TextRange := Body.createTextRange;
       Result := TextRange.text;
     end;
   finally
     WebBrowser.Free;
   end;
end;
jetzt muss ich bloß noch rausfinden, wieso der mir so einen script fehler ausgibt und wie ich das unterbinden kann!

mfg matthias


Gebt Trollen keine Chance!!!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:52 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