Moin!
Also am besten immer alles gleich für den richtigen Kontext vorbereiten, auch wenn bei 90% der Daten keine Probleme auftreten.
Für die Codierung mit utf-8 reicht htmlspechialchars(...,ENT_QUOTES)
Für die Codierung mit ISO 8859-1 sollte man schon htmlentities(...,ENT_QUOTES) benutzen.
Nein, das ist nicht notwendig. In keiner Konstellation.
Da der Datenaustausch zwischen Server und Browser sowie zwischen Browser und Server in der gleichen Codierung abläuft, sofern man nicht manuell eingreift, stehen die Strings in PHP in der passenden Codierung zur Verfügung. htmlentities() codiert Zeichen, die nicht codiert werden müssen - und benötigt obendrein für korrektes Arbeiten die Angabe, welche Zeichencodierung verwendet werden soll.
htmlspecialchars() hingegen arbeitet unabhängig von der Zeichencodierung korrekt, da die fraglichen Zeichen sowohl in UTF-8 als auch in ISO-8859-1 (oder jeder anderen ISO-Kodierung).
Der Parameter ENT_QUOTES ist im Regelfall auch überflüssig.
- Sven Rautenberg
"Love your nation - respect the others."