14. Dezember 200421 j 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
14. Dezember 200421 j 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
14. Dezember 200421 j string strip_tags(string str [, string allowable_tags]) Ich denke du suchst sowas? In SelfPHP ist ne gute Beschreibung dazu.
14. Dezember 200421 j 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.
14. Dezember 200421 j 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...
14. Dezember 200421 j 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>
14. Dezember 200421 j 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
15. Dezember 200421 j ungetestet! $tags = array('p', 'h1', 'a'); $reg_tags = '(' . implode( '|', $tags) .')'; return preg_replace('!^(<'. $reg_tags .'[^>]*?>)!', '<\\0>', $string); [/PHP]
15. Dezember 200421 j 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]
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.