Tach!
Es sei denn, du kannst sicherstellen, dass du keine Zeichen mit Sonderbedeutung in beiden Kontexten verwendest.
Die Werte kommen 1:1 aus der db.
Also kannst du es nicht sicherstellen. Ein DBMS wird ja nicht zum Ablegen konstanter Werte verwendet, sonst bräuchte man sie ja nicht. Man muss annehmen, dass der Inhalt Sonderzeichen enthalten kann. Man sollte das selbst dann annehmen, wenn man eigentlich sichergestellt hat, dass nur Werte ohne Sonderzeichen in die Datenbank geschrieben wurden. So eine Datenbank ist ja nicht soweit abgeschottet, dass nur der eine Prozess schreiben kann und unter keinen anderen Umständen Sonderzeichen hineingelangen können. Wie auch immer, es ist besser, davon auszugehen, dass in der Datenbank alles mögliche drinstehen kann und das bei der Ausgabe korrekt zu maskieren. Der geringe, kaum messbare Performanceverlust wiegt die potentiellen Sicherheitsprobleme bei weitem wieder auf.
Lange Rede, ... Für Javascript kennt PHP keine Maskierfunktion. Im Kontextwechsel-Artikel findest du jedoch eine in der Fortsetzung. Anschließend muss da noch htmlspecialchars() drumherum, weil das Javascript als Attributwert in HTML landet.
dedlfix.