Удаление тегов DELPHI

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by SultanOFF, 21 May 2010.

  1. SultanOFF

    SultanOFF Member

    Joined:
    4 Jun 2009
    Messages:
    156
    Likes Received:
    6
    Reputations:
    0
    здравствуйте. Парсю страницу, но в тексте остаются html теги (<br> etc) Дайте пожалуйста если кто знает код, с помощью которых можно удалить все теги. Желательно использовать регулярки
     
  2. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    а гуглить пробовал? regex html теги
     
    1 person likes this.
  3. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    937
    Likes Received:
    162
    Reputations:
    27
    Удаляй все от < до >.
     
  4. Ildon

    Ildon Member

    Joined:
    13 Apr 2010
    Messages:
    43
    Likes Received:
    11
    Reputations:
    -10
    Вот например

    Code:
    
      unsigned pos1, len1;
    pos1 = Form4->Memo1->Text.Pos("<");
    len1 = strlen("<");
    Form4->Memo1->Text = Form4->Memo1->Text.SubString(pos1 + len1, MaxInt);
    unsigned pos3 ;
    
    pos3 = Form4->Memo1->Lines->Strings[0].Pos("'>");
    Form4->Memo1->Text=(Form4->Memo1->Lines->Strings[0].SubString(1, pos3 - 1));
    
     
  5. narik_

    narik_ Member

    Joined:
    5 Jun 2009
    Messages:
    0
    Likes Received:
    30
    Reputations:
    0
    глупо. а вдруг в тексте будут такие символы?
     
  6. SultanOFF

    SultanOFF Member

    Joined:
    4 Jun 2009
    Messages:
    156
    Likes Received:
    6
    Reputations:
    0
    Code:
    function ConvertHTML(AInput: WideString): WideString;
    var
      Len, WriteLen, ReadPos, OldPos, WritePos: integer;
    begin
      Len := Length(AInput);
      if Len = 0 then
        Exit;
      SetLength(Result, Len);
      ReadPos := 1;
      WritePos := 1;
      while ReadPos < Len do
      begin
        OldPos := ReadPos;
        while (AInput[ReadPos] <> WideChar('<')) and (ReadPos < Len) do
          Inc(ReadPos);
        WriteLen := ReadPos - OldPos;
        if WriteLen > 0 then
        begin
          Move(AInput[OldPos], Result[WritePos], WriteLen*2);
          Inc(WritePos, WriteLen);
        end;
        while (AInput[ReadPos] <> WideChar('>')) and (ReadPos < Len) do
          Inc(ReadPos);
        Inc(ReadPos);
      end;
      SetLength(Result, WritePos - 1);
    end;
    гугл рулит, однако
     
  7. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    937
    Likes Received:
    162
    Reputations:
    27
    Это глупо на первый взгляд... Но если вдуматься, и такой символ может встречаться у тексте, то целиком возможно, что:
    1) На сайте есть XSS уязвимость.
    2) На сайте сделали ошибку при форматировании HTML тегов.