Thema: Delphi HTML Tags entfernen

Einzelnen Beitrag anzeigen

handyotto

Registriert seit: 6. Aug 2012
10 Beiträge
 
#30

AW: Re: HTML Tags entfernen

  Alt 2. Jun 2015, 11:54
Die Funktion ReplaceHTMLChar machte noch immer Probleme bei nicht abgeschlossenem Tag oder wenn einfach mal so ein "&" vorkam.

Habe das nun komplett neu durchdacht:

Delphi-Quellcode:
  function ReplaceHTMLChar(sValue: string): string;
  var
    tagStartPos, tagNxtStartPos : Integer;
    tagEndPos : Integer;
    tag, newTag : string;
    Found : BOOLEAN;
  begin
    tagEndPos:=1;
    Result:=sValue;
    TRY
      REPEAT
        Found:=FALSE;
        tagStartPos:=PosEx('&', Result, tagEndPos);
        if tagStartPos > 0 then
        BEGIN
          tagEndPos:=PosEx(';', Result, tagStartPos);
          Found:=(tagEndPos > tagStartPos);
          if Found then
          BEGIN
            tagNxtStartPos:=tagStartPos;
            REPEAT // Gibts vielleicht noch ein Start- vor dem Ende-Zeichen?
              tagNxtStartPos:=PosEx('&', Result, tagNxtStartPos+1);
              if (tagNxtStartPos > 0) AND (tagNxtStartPos < tagEndPos) then
                tagStartPos:=tagNxtStartPos;
            UNTIL (tagNxtStartPos = 0) OR (tagNxtStartPos > tagEndPos);
            if (tagEndPos - tagStartPos < 8) then
            BEGIN
              tag:=copy(Result, tagStartPos, tagEndPos - tagStartPos + 1);
              newTag:=GiveSZ(tag);
              Result:=copy(Result, 1, tagStartPos - 1) + newTag +
                      copy(Result, tagEndPos + 1, length(Result) - tagEndPos);
              tagEndPos:=tagEndPos - length(tag) + length(newTag);
            END
            ELSE
              tagEndPos:=tagStartPos+1;
          END;
        END;
      UNTIL Not Found;
    EXCEPT
      Result:=sValue; // Wenn doch was unvorhergesehenes passiert, dann lieber ungewandelt zurück!
    END;

Bitte Melden, wenn auch damit Probleme entstehen sollten.
  Mit Zitat antworten Zitat