PHP Unerwünschte HTML-Tags + Attribute entfernen mit ausnahmen

M3Y3R

Well-known member
ID: 336361
L
8 Mai 2006
1.608
60
Hallo,

ich möchte unerwünschte HTML-Tags sowie Attribute der Tags aus den Benutzereingaben entfernen. Dabei möchte ich bestimmt Tags bzw. Attribute erlauben. Kennt jemand eine Funktion die dies ermöglicht oder hat jemand etwas selbst geschriebenes, welche zuverlässig arbeitet?

strip_tags() hilft mir leider nicht weiter, da ich dann immernoch unerwünschte Attribute in den HTML-Tags habe.

Beispiel:
User postet folgenden HTML-Code:
HTML:
<P align="RIGHT">Test 1</P>
<a target="_blank" href="https://www.test.de">Test.de</a>
<CENTER>Zentriert</CENTER>

Erlaubte HTML-Tags:
:arrow: P
:arrow: a

Erlaubte Attribute:
:arrow: href
:arrow: target

Ergebnis wäre nun von oben folgendes:
HTML:
<P>Test 1</P>
<a target="_blank" href="https://www.test.de">Test.de</a>
Zentriert

Somit ist nun folgendes rausgeflogen:
:arrow: align="RIGHT" im p-Tag
:arrow: <CENTER>
:arrow: </CENTER>


Natürlich muss, wenn das Tag nicht erlaubt ist, der Text erhalten bleiben welcher zwischen dem öffnenden und dem schließendem Tag steht, so wie im Beispiel! ;)


Wer hat hier etwas passendes?


MFG
Papenburger
 
die aufgabe einfach teilen
erst mit strip_tags alles rauswerfen und dann mit dem simple_html_dom den dom entsprehend manipulieren und ausgeben - oder eben selbst durchhangeln
 
der HtmlPurifier verfolgt nicht ohne Grund einen Whitelist-Ansatz (es wird der DOM anhand erlaubter Tags neu aufgebaut), denn bei allen HTML-Filtern davor die auf einem Blacklist-Ansatz beruhten gab es zu viele Möglichkeiten doch einmal böses HTML durchzuschleußen.