Sven Rautenberg: alles löschen was sich innerhalb von <> befindet

Beitrag lesen

Moin!

ich möchte aus einem Text String alle Formatierungen löschen, also alles was sich zwischen den Zeichen <> (<strong>, <div class="weg">, etc.) befindet, inkl dieser.

Warum willst du das löschen? "<" und ">" sind absolut vertrauenswürdige und erlaubte Zeichen, die man nicht löschen muss.

Ich habe es hiemrit versucht, aber leider ohne großen Erfolg:

preg_replace("-<(.*?)>-si"," ",$text)

Das hilft dir bei deinem Problem nicht weiter. Deine Frage kommt vermutlich aus der Situation, dass du irgendwelche Benutzereingaben absichern willst, die vielleicht HTML enthalten könnten, was vom Browser nicht ausgeführt werden soll.

Es gibt zwei Lösungen dafür, eine einfach und eine komplexe.

Die einfache Lösung ist die Verwendung von htmlspecialchars(). Die wandelt diese Zeichen in HTML-Entities um, und der Browser wird einfach nur die eingegebenen Zeichen anzeigen.

Die komplexe Lösung erfordert die Installation der Bibliothek HTMLPurifier.

Alle weiteren Ansätze, egal ob mit regulären Ausdrücken, strip_tags() oder sonstigen Dingen, werden das Problem nur unzureichend und lückenhaft lösen.

Das mir in diesem Zusammenhang erst unlängst bekanntgewordene Fail ist hier nachzulesen: http://blog.astrumfutura.com/archives/425-Zend_Filter_StripTags-Friend,-Foe,-or-Security-Nightmare.html

- Sven Rautenberg