Will php's json_encode() always use double quotes as string delimiter?
Yes, as defined in the JSON spec, the delimiter will always be "
. However, values may contain '
characters, which would break your HTML. To keep it simple and not worry about what might or mightn't pose an issue, HTML-escape your values!
<section data-settings="<?= htmlspecialchars(json_encode($foo)); ?>"></section>
This is guaranteed to work, always, no matter what values you pipe in or how you encode them.
NOTE that htmlspecialchars
will by default only encode "
, not '
; so you must use "
as the delimiter in HTML (or change the default escaping behavior).