getting json_encode to not escape html entities
Neither PHP 5.3 nor PHP 5.2 touch the HTML entities.
You can test this with the following code:
<?phpheader("Content-type: text/plain"); //makes sure entities are not interpreted$s = 'A string with & ۸ entities';echo json_encode($s);
You'll see the only thing PHP does is to add double quotes around the string.
json_encode
does not do that. You have another component that is doing the HTML encoding.
If you use the JSON_HEX_
options you can avoid that any <
or &
characters appear in the output (they'd get converted to \u003C
or similar JS string literal escapes), thus possibly avoiding the problem:
json_encode($s, JSON_HEX_TAG|JSON_HEX_AMP|JSON_HEX_QUOT)
though this would depend on knowing exactly which characters are being HTML-encoded further downstream. Maybe non-ASCII characters too?