Moin!
Ok, damit ich sicher bin, dass ich alles richtig verstanden habe, bitte folgende Statements einmal absegnen:
Nö. Deine Statements sind mir zu allgemein.
Entscheidend für die Wahl der korrekten Codierung der Ausgabe ist, in welchem Kontext sie eingesetzt wird.
Gib mal konkret an, in welche HTML-Konstrukte du auf welche Weise deine aus PHP kommenden Strings einbauen willst, und als was du deren Inhalt verstanden haben möchtest. Dann kann man dir auch sagen, wie das zu codieren ist.
- Es macht in oben beschriebenem Szenario nirgendwo Sinn, htmlentities() einzusetzen, da ich alles in UTF-8 vorliegen habe.
Das stimmt allemal. htmlentities() ist eine überflüssige Funktion. Das bedeutet aber nicht, dass eine andere Funktion wie z.B. htmlspecialchars() nicht doch notwendig ist.
htmlentities() ist übrigens auch dann überflüssig, wenn man konsistent durchgehend auf ISO-8859-1 oder sonst eine einheitliche Codierung setzt - denn man wird es ja dann auch immer nur mit Zeichen zu tun haben, die man innerhalb dieser gewählten Codierung darstellen kann, so dass es der Entities nicht bedarf.
- Ich sollte jedes htmlentities() durch htmlspecialchars() ersetzen (Da nur für das Befüllen von Formularfeldern gebraucht bzw für die Ausgabe von Inhalt, der definitiv kein HTML enthalten darf/wird)
Das wäre auch keine schlechte Idee, hängt aber vom Kontext ab: Wo htmlspecialchars() nicht gebraucht wird, wird htmlentities() auch nicht gebraucht.
- Ich sollte meine Spezialfunktion "htmlentitiesHTML()" dahingehend reduzieren, dass nur die ungewollten Tags per strip_tags() eliminiert werden. Maskierungen per htmlentities() oder htmlspecialchars() machen keinen Sinn, da Inhalt als HTML interpretierbar bleiben soll.
Das sind zwei Paar Schuhe: Das eine ist die Validierung und Säuberung des Codes, der aus dem TinyMCE kommt, das andere ist die Codierung der Ausgabe entsprechend Kontext.
- Sven Rautenberg