Remix.run Logo
semiquaver 9 hours ago

Are they just confused about what characters require escaping in JSON strings or is PHP weirder than I remember?

    {
        "\/blog\/11-million-rows-in-seconds": {
            "2025-01-24": 1,
            "2026-01-24": 2
        },
        "\/blog\/php-enums": {
            "2024-01-24": 1
        }
    }
idoubtit 7 hours ago | parent | next [-]

The weirdness is partly in JSON . In the JSON spec, the slash (named "solidus" there) is the only character that can be written plainly or prefixed with a backslash (AKA "reverse solidus").

See page 4, section 9 of the latest ECMA for JSON: https://ecma-international.org/wp-content/uploads/ECMA-404_2...

daviddoran 8 hours ago | parent | prev | next [-]

PHP has always escaped forward slashes to help prevent malicious JSON from injecting tags into JavaScript I believe. Because it was common for PHP users to json_encode some data and then to write it out into the HTML in a script tag. A malicious actor could include a closing script tag, and then could inject their own HTML tags and scripts etc.

CapitaineToinon 9 hours ago | parent | prev | next [-]

That's the default output when using json_encode with the JSON_PRETTY_PRINT flag in php.

idoubtit 8 hours ago | parent [-]

> That's the default output when using json_encode with the JSON_PRETTY_PRINT flag in php.

JSON_PRETTY_PRINT is irrelevant. Escaping slashes is the default behavior of json_encode(). To switch it off, use JSON_UNESCAPED_SLASHES.

CapitaineToinon 6 hours ago | parent [-]

Ah, my bad. Thanks for the correction, TIL!

poizan42 9 hours ago | parent | prev [-]

> The output should be encoded as a pretty JSON string.

So apparently that is what they consider "pretty JSON". I really don't want to see what they would consider "ugly JSON".

(I think the term they may have been looking for is "pretty-printed JSON" which implies something about the formatting rather than being a completely subjective term)

ourmandave 6 hours ago | parent [-]

Pretty JSON not meaning formatting, but more "That was pretty JSON of you."