Jan Rüther: Störende Html Tags mit replace entfernen

Hallo ich möchte aus einem textarea alle Html-tags entfernen lassen um so eine Manipulationsfreie Eingabe zu ermöglichen. Ich möchte den Text zwischen den Tags aber erhalten.

Mein Code

function replacehtml(ort)
{
var reg =  /<(.*)>/;
  //while(reg.test(text))
  //{
    var text = document.getElementById(ort).value;
    document.getElementById(ort).value = text.replace(reg,"");
  //}
}

Problem es wir nicht <hag> oder </hag> gelöscht.
Sondern <hag>....</hag> und somit geht der Inhalt verloren. Ich sortiere nicht aus sondern vernichte die ganze Eingabe. Was ist an meinem Ausdruck falsch? Wie kann ich auch langen Tags über mehrere Zeilen kleinkriegen?

  1. Moin!

    Hallo ich möchte aus einem textarea alle Html-tags entfernen lassen um so eine Manipulationsfreie Eingabe zu ermöglichen.

    Was verstehst du denn unter einer "manipulationsfreien Eingabe"?

    Javascript ist zur Sicherstellung von garantierten Benutzereingaben absolut ungeeignet. Nutze serverseitige Techniken!

    Und vermutlich setzt du ohnehin falsch an. HTML-Tags in Benutzereingaben sind nicht böse. Sie ohne Escaping wieder an den User zu schicken ist böse.

    Wandle jedes Zeichen < in die Entity &lt;, jedes Zeichen > in die Entity &gt;, und jedes Zeichen & in die Entity &amp; - schon hast du keine Probleme mehr mit Cross-Site-Skripting im HTML-Kontext. Wobei die Wandlung selbstverständlich serverseitig und erst bei der Ausgabe erfolgen soll, nicht vorher.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
    1. Moin!

      Hallo ich möchte aus einem textarea alle Html-tags entfernen lassen um so eine Manipulationsfreie Eingabe zu ermöglichen.

      Was verstehst du denn unter einer "manipulationsfreien Eingabe"?

      Javascript ist zur Sicherstellung von garantierten Benutzereingaben absolut ungeeignet. Nutze serverseitige Techniken!

      Und vermutlich setzt du ohnehin falsch an. HTML-Tags in Benutzereingaben sind nicht böse. Sie ohne Escaping wieder an den User zu schicken ist böse.

      Wandle jedes Zeichen < in die Entity &lt;, jedes Zeichen > in die Entity &gt;, und jedes Zeichen & in die Entity &amp; - schon hast du keine Probleme mehr mit Cross-Site-Skripting im HTML-Kontext. Wobei die Wandlung selbstverständlich serverseitig und erst bei der Ausgabe erfolgen soll, nicht vorher.

      • Sven Rautenberg

      Mit störendem HTML-Code sind alle Möglichen HTML-Formatierungen gemeint. Das Problem ist ein WYSIWYG-Editor der, wenn man einen Text aus Word rein kopiert oder einen Text mehrfach bearbeitet hunderte von HTML-Elementen einbaut, die es unmöglich machen weiterhin Dinge am Layout zu ändern, besonders Schriftart und Größe.

      Und um jetzt arbeite ich an einem Mini-PlugIn, das ALLE HTML-Elemente per Java Script aus dem Editor-Textfeld entferne, damit das Layout über die WYSIWYG-Oberfläche neu gestaltet werden kann!
      Das versuche ich mit einer  Funktion, die alle HTML-Tags entfernt bzw. durch einen Leer-String ersetzt. Also aus „<TAGNAME>“ wird „ “!

      1. Vielen Dank an beide Helfer!
        Das Fragezeichen hat die Funktion ans Laufen gebracht.
        Und das Kölner Grundgesetz hat mir auch einen freudigen Abend bereitet.

  2. Hej,

    Unabhängig von dem was Dir schon gesagt wurde.

    var reg = /<(.*)>/;

    Berücksichtige, dass * gierig ist. Was du eher bräuchtest, wäre ein zurückhaltender Platzhalter:

    var reg = /<(.*?)>/;

    Beste Grüße
    Biesterfeld

    --
    Art.1: Et es wie et es
    Art.2: Et kütt wie et kütt
    Art.3: Et hätt noch immer jot jejange
    Das Kölsche Grundgesetz