Причина этого "ускользает" от меня.
JSON избегает прямой косой черты, поэтому вместо этого {a: "a/b/c"}
используется сериализация хэша .{"a":"a\/b\/c"}
{"a":"a/b/c"}
Почему?
javascript
json
Джейсон С
источник
источник
json_encode()
по умолчанию экранирует косые черты, но имеетJSON_UNESCAPED_SLASHES
опцию, начиная с PHP 5.4.0 (март 2012 г.)'</'
:echo str_replace('</', '<\/', json_encode($obj, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
Ответы:
JSON не требует от вас этого, он позволяет вам это делать. Это также позволяет вам использовать «\ u0061» для «А», но это не обязательно. Разрешение
\/
помогает при встраивании JSON в<script>
тег, который не допускает</
внутренних строк, как указывает Seb.Некоторые из Microsoft ASP.NET Ajax / JSON API используют эту лазейку для добавления дополнительной информации, например, datetime будет отправлено как
"\/Date(milliseconds)\/"
. (Yuck)источник
/
не требуется , это разрешено , чтобы облегчить использование JSON. Если ты не хочешь сбежать/
, не делай этого.Спецификация JSON гласит, что вы МОЖЕТЕ избежать косой черты, но вам это не нужно.
источник
Я задал тот же вопрос некоторое время назад и должен был ответить на него сам. Вот что я придумал:
источник
PHP по умолчанию экранирует косые черты, поэтому, вероятно, это происходит так часто. Я не уверен, почему, но, возможно, потому что встраивание строки
"</script>"
внутри<script>
тега считается небезопасным.Эту функцию можно отключить, передав
JSON_UNESCAPED_SLASHES
флаг, но большинство разработчиков не будут использовать ее, поскольку исходный результат уже является допустимым JSON.источник
Уродливый PHP!
JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES
Должен быть по умолчанию, а не (странно) вариант ... Как сказать это PHP-разработчиков?По умолчанию ДОЛЖНЫ быть наиболее частое использование и (текущие) наиболее широко используемые стандарты как UTF8. Сколько фрагментов PHP-кода в Github или другом месте нуждается в этой экзотической функции «встраивания в HTML»?
источник
'\/' === '/'
возвращается истина. Я бы посоветовал вам придерживаться фактов. Большинство людей могут справиться с несколькими несовместимыми именами функций. То, что вы не видите прошлого, не делает PHP плохим инструментом.