HTML-Tags entfernen



  • Moin,
    ich wollte jetzt mal eine Funktion schreiben die mir erstmal alle HTML-Tags aus einem String entfernt. Bis jetzt sieht es folgendermaßen aus:

    int len = strlen(szString);
            int count = 0;
            char sf[] = "<";
            char sf2[] = ">";
            for (int a=0; a<len; a++) // string wird eingelsen, bis zum ende (len)
            {
              if(szString[a] != sf[0])   // ist der aktuelle char ungleich "<" ?
              {
                szText[count] = szString[a];  // schreibe aktuellen char in aktuelle stelle in 'szText'
                count++;               // aktuelle stelle in 'szText' wird für nächsten char hochgesetzt
              }
              else
              {
                for(int b=a; b<len; b++)  // 'b' ist 'a', also aktuelle position im string
                {
                  if(szString[b] != sf2[0])  // ist der aktuelle char ungleich "<" (also ist der html-tag noch offen) ?
                  {
                    a++;                     // 'a', also die aktuelle position wird um eins erhöht
                  } 
                  else
                  {
                    break;                //sonst (wenn aktueller char == ">") wird schleife abgebrochen
                  }
                }
              } 
            }
    

    'szSting' ist der String mit den HTML-Tags und 'szText' soll der String ohne HTML-Tags sein. Aber z.B. bei einem String wie diesem:

    <html>
    <body bgcolor=cccccc text=000000>
    <center>
    <h2>Webserver</h2>
    Apache 1.3<br>
    </center>
    </body>
    </html>
    

    bekomme ich folgende Ausgabe:

    Webserver
    Apache 1.3
    

    Für jede HTML-Zeile aus dem Quellcode habe ich in meinem Endprodukt jetzt eine leere Zeile. Obwohl ich doch eigentlich nur einige Charakter in den String geschrieben habe. Wie sind die Zeilenumbrüche da hinein gekommen?
    Steh da jetzt irgendwie auf'm Schlauch. 😕



  • Ich sehe gerade das der Code bei der Ausgabe hier im Forum falsch dargestellt wird. Die Zeilenumbrüche werden hier einfach entfernt. Naja man muss sich das so vorstellen, das die erste Zeile der Ausgabe ("Webserver") erst in Zeile drei steht, wie im Quelltext.



  • Irgendwie verstehe ich dich nicht so recht - im Ausgangs-HTML-Quelltext hast du doch auch Zeilenumbrüche drin 😕



  • im Ausgangs-HTML-Quelltext hast du doch auch Zeilenumbrüche drin 😕

    Ja, habe ich. Aber ich übertrage doch nur durch szText[count] = szString[a]; einzelne Zeichen von einem String in den anderen. Ich verstehe nicht, wieso die Zeilenumbrüche mitkommen. Und ich würde gerne wissen, wie ich das verhindern kann.
    Also im szText String sollen einfach keine Zeilenumbrüche sein.



  • Dieser Thread wurde von Moderator/in cd9000 aus dem Forum WinAPI in das Forum ANSI C verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • unter windows hat doch ein zeilenumbruch \r\n und unter unix/linux \n oder? wieviele zeichen sind das jetzt? (auf jedenfall mind. 1)

    du kannst ja checken

    if(/*win: szString[a]!='\r'&&*/szString[a]!='\n'&&szString[a+1]!='\n')
    {
      //tu was
    }
    

    dann wird ja gecheckt ob das aktuelle entweder ein \r (kommentar weg) oder ein \n oder das aktuelle ein \r und das nächste ein \n ist.
    normalerweise gehts mit dieser abfrage!


Anmelden zum Antworten