Results 1 to 6 of 6

Thread: HTML tekst lezen en schrijven

  1. #1
    Senior Member
    Join Date
    Dec 2006
    Location
    Kruishoutem, Vlaamse Ardennen
    Posts
    1,140

    HTML tekst lezen en schrijven

    Hoi allen,

    Bestaat er binnen Delphi een functie waarbij gewone tekst (dus ook met speciale HTML-tekens zoals '<' en '>') wordt omgezet naar HTML-tekst, dus waar die speciale tekens als de HTML_representatie worden omgezet?
    Uiteraard ook de omgekeerde weg.

    Ik heb het op deze tekens vb : &gt

    thx...
    Jan

  2. #2
    Volgens mi niet, dus die zul je zelf moeten schrijven...leuke uitdaging toch ?
    Brouwvisie is helemaal mijn ding
    http://www.bier-brouwer.nl

  3. #3
    Senior Member
    Join Date
    Dec 2006
    Location
    Kruishoutem, Vlaamse Ardennen
    Posts
    1,140
    Ja hoor, maar moest het bestaan, ware het gek om ze zelf te schrijven hé.

  4. #4
    Heb je hier iets aan ?

    Code:
    unit DzURL;
    
    { By Alexander Dzyubenko
         alexander@dzsoft.com
         http://www.dzsoft.com }
    
    interface
    
    uses SysUtils;
    
    function UrlEncode(const DecodedStr: String; Pluses: Boolean): String;
    // Encodes standard string into URL data format.
    // Example: http://www.dzsoft.com -> http%3A%2F%2Fwww.dzsoft.com%2F
    // Pluses parameter specifies whether spaces will be 
    // encoded as '+' or as '%20'
    
    function UrlDecode(const EncodedStr: String): String;
    // Decodes URL data into a readable string.
    // Example: http%3A%2F%2Fwww.dzsoft.com%2F -> http://www.dzsoft.com
    
    function HexToInt(HexStr: String): Int64;
    // Taken from http://www.delphi3000.com/article.asp?id=1412
    
    implementation
    
    function UrlEncode(const DecodedStr: String; Pluses: Boolean): String;
    var
      I: Integer;
    begin
      Result := '';
      if Length(DecodedStr) > 0 then
        for I := 1 to Length(DecodedStr) do
        begin
          if not (DecodedStr[I] in ['0'..'9', 'a'..'z',
                                           'A'..'Z', ' ']) then
            Result := Result + '%' + IntToHex(Ord(DecodedStr[I]), 2)
          else if not (DecodedStr[I] = ' ') then
            Result := Result + DecodedStr[I]
          else
            begin
              if not Pluses then
                Result := Result + '%20'
              else
                Result := Result + '+';
            end;
        end;
    end;
    
    function UrlDecode(const EncodedStr: String): String;
    var
      I: Integer;
    begin
      Result := '';
      if Length(EncodedStr) > 0 then
      begin
        I := 1;
        while I <= Length(EncodedStr) do
        begin
          if EncodedStr[I] = '%' then
            begin
              Result := Result + Chr(HexToInt(EncodedStr[I+1]
                                           + EncodedStr[I+2]));
              I := Succ(Succ(I));
            end
          else if EncodedStr[I] = '+' then
            Result := Result + ' '
          else
            Result := Result + EncodedStr[I];
    
          I := Succ(I);
        end;
      end;
    end;
    
    function HexToInt(HexStr: String): Int64;
    var RetVar : Int64;
        i : byte;
    begin
      HexStr := UpperCase(HexStr);
      if HexStr[length(HexStr)] = 'H' then
         Delete(HexStr,length(HexStr),1);
      RetVar := 0;
    
      for i := 1 to length(HexStr) do begin
          RetVar := RetVar shl 4;
          if HexStr[i] in ['0'..'9'] then
             RetVar := RetVar + (byte(HexStr[i]) - 48)
          else
             if HexStr[i] in ['A'..'F'] then
                RetVar := RetVar + (byte(HexStr[i]) - 55)
             else begin
                Retvar := 0;
                break;
             end;
      end;
    
      Result := RetVar;
    end;
    
    end.

  5. #5
    Da's url-encode. Dat is weer net iets anders dat html-encode. Je moet de tekens omzetten naar html entities, dus & naar &amp ;, é naar &eacute ; enzovoorts.
    De conversie werkt overigens op ongeveer dezelfde manier. Alle speciale tekens worden omgezet naar een speciale code die bestaat uit een ampersand, een code en een puntkomma. Voor het encoderen mag je gebruik maken van de bestaande lijst met HTML entities die wel op W3schools.com te vinden zal zijn. Je mag ook numerieke waarden gebruiken, dus je hoeft (voor het encoderen tenminste) geen gebruik te maken van de lijst met entities).

    Decoderen werkt net zo makkelijk. Zoek naar een ampersand, zoek vanaf daar naar een puntkomma en probeer de waarde ertussen om te zetten naar een geldig teken. Lukt dat niet dan is de waarde volgens mij officieel ongeldig, maar veel browsers laten dan gewoon de ampersand en de achterliggende tekens zien.
    1+1=b

  6. #6
    Senior Member
    Join Date
    Dec 2006
    Location
    Kruishoutem, Vlaamse Ardennen
    Posts
    1,140
    Bedankt mensen. Het wordt zelf pennen.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •