tobias-digital Geschrieben 14. Dezember 2004 Teilen Geschrieben 14. Dezember 2004 Hi! Ich habe hier ein ganz normales HTML-Eingabefeld: <textarea name="test" rows="10" cols="10"></textarea> Beim abschicken des Formulars wird der Inhalt dieses Feldes in einer Datenbank abgelegt. Jetzt benötige ich eine Funktion die mir folgendes ermöglicht: es gibt eine Liste (Array oder String) in der erlaubte HTML-Tags stehenes sollen nun aus den übermittelten Daten alle HTML-Tags, die nicht erlaubt sind in Ihre HTML-Entitäten umgewandelt werden Ziel ist es, dem Benutzer eine rudimentäre HTML-Eingabemethode zu ermöglichen, wie z.B. in diesem Forum. Gruß Tobias Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SNOWMAN Geschrieben 14. Dezember 2004 Teilen Geschrieben 14. Dezember 2004 naja, als erstes hast du die grandiose aufgabe die liste anzulegen. du erstellt einfach ne tabelle in der alle erlaubten befehle vorkommen. beim abschicken des formulars muss dieses mit substring durchgearbeitet werden und wenn ein "<" findest musst du alles bis zum nächsten ">" in eine variable speichern, die wird mit nem sql aus der tabelle abgefragt und wenn die rückgabe größe als 0 ist dann musst du die spitzen klammern so setzten das sie auch wirklich spitz sind und nicht als ">" oder "<" dastehen. ansonsten kannst du es so lassen, der text wird dann wie ein html-tag angezeigt, funktioniert aber nicht Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Krain Geschrieben 14. Dezember 2004 Teilen Geschrieben 14. Dezember 2004 string strip_tags(string str [, string allowable_tags]) Ich denke du suchst sowas? In SelfPHP ist ne gute Beschreibung dazu. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tobias-digital Geschrieben 14. Dezember 2004 Autor Teilen Geschrieben 14. Dezember 2004 Ich denke du suchst sowas? In SelfPHP ist ne gute Beschreibung dazu. Diese Funktion ist schon ganz gut, löscht aber die nicht erlaubten tags. Ich will aber, dass die nicht erlaubten Tags in HTML-Entitäten umgewandelt werden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SNOWMAN Geschrieben 14. Dezember 2004 Teilen Geschrieben 14. Dezember 2004 O_o also wenn ich dich richtig verseh dann wäre dieses Beispiel das was du willst: EINGABEFORMULAR <a href="http://www.google.de">Google</a> <body bgcolor="****grün"> ... </body> der anchor ist erlaubt, der body nicht VERARBEITET <body bgcolor="****grün"> ... </body> oder meinst du das hier im forum wie [b] und das soll dann zu <font bold> werden? aber wieso dann die verbotenen? ich glaub ich blicks net... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tobias-digital Geschrieben 14. Dezember 2004 Autor Teilen Geschrieben 14. Dezember 2004 Also ich mach's nochmal deutlich: Ich habe eine textarea, die beim submit an eine PHP-Datei geschickt und dort verarbeitet wird. Angenommen der Benutzer hat folgendes eingegeben: <h1>Test</h1> <script type="text/javascript" src="badScript.js"></script> <p>Hallo <a href="http://www.bar.org">Welt</a></p> Dieser String wird an besagtes Script übergeben. Es gibt im Script eine Liste der erlaubten Tags, z. B. so: $erlaubteTags = array('p', 'h1', 'a'); Und das soll jetzt in die Datenbank geschrieben werden: <h1>Test</h1> <script type="text/javascript" src="badScript.js"></script> <p>Hallo <a href=http://www.bar.org">Welt</a></p> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 14. Dezember 2004 Teilen Geschrieben 14. Dezember 2004 dann bau dir doch nen regEx zusammen... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Krain Geschrieben 14. Dezember 2004 Teilen Geschrieben 14. Dezember 2004 dann bau dir doch nen regEx zusammen... Du sagst das so einfach. Ich habe mich vor Kurzem erst mit regEx geprügelt, dann aber doch eine Lösung gefunden. Irgendwie versteh ich die Syntax noch nicht wirklich - es wird aber langsam durchschaubar. Aber ich denke auch, dass ereg_replace() die Lösung für dich sein dürfte. Wenn Du einen Ansatz findest lass es uns bitte wissen. Das Thema interessiert mich auch. gruss markus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 15. Dezember 2004 Teilen Geschrieben 15. Dezember 2004 ungetestet! $tags = array('p', 'h1', 'a'); $reg_tags = '(' . implode( '|', $tags) .')'; return preg_replace('!^(<'. $reg_tags .'[^>]*?>)!', '<\\0>', $string); [/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 15. Dezember 2004 Teilen Geschrieben 15. Dezember 2004 Mein Tip: mixed preg_replace_callback ( mixed Suchmuster, callback Callback, mixed Zeichenkette [, int Limit]) http://de.php.net/manual/de/function.preg-replace-callback.php # die Funktion muss eine eigene sein. # um die entities zu erstellen kannst du dort die funktion html_entities nutzen ([url]http://de.php.net/manual/de/function.htmlentities.php[/url]) $prae = "§</?"; $post = ".+?>§ms"; $bad_tags = array("body","a","..."); # concat $pattern .= $prae."[".implode("|", $bad_tags)."]*".$post; preg_replace_callback($pattern, "makeEntity", $badInput); [/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.