dedlfix: Wiki-Push: PHP

Beitrag lesen

Tach!

Dazu müsste der Platzhalter den Kontext kennen, in dem er sich befindet. htmlspecialchars() ist ja nicht für alle Kontexte eines HTML-Dokuments geeignet, mitunter muss man mehrere Maskierungen schachteln.

Natürlich. Die Frage ist nur wann. Es braucht hier nicht interessieren, dass $var1 Javascript ist. Und das javascript muss nichts wissen über den Kontxt in den es eingesetzt wird.

sprintf('<button onclick="%s">%s</button>', htmlspecialchars($var1), htmlspecialchars($var2));

In diesem einfachen Beispiel ist das noch kein Problem. Aber nimm mal eine URL in einem A-Element. Da wäre es theoretisch schon wie folgt. Praktisch kann man das htmlspecialchars() in dem Fall weglassen, weil rawurlencode() keine HTML-spezifischen Zeichen übriglässt.

sprintf('<a href="http://example.com/%s">%s</a>', htmlspecialchars(rawurlencode($var1)), htmlspecialchars($var2));

dedlfix.