Кто-нибудь может объяснить этот код PHP с помощью json_encode и json_decode? - PullRequest
2 голосов
/ 24 сентября 2008
  $a = '{ "tag": "<b></b>" }';
  echo json_encode( json_decode($a) );

Это выводит:

{"tag":"<b><\/b>"}

когда вы думаете, что он выведет именно ввод. По какой-то причине json_encode добавляет дополнительную косую черту.

Ответы [ 4 ]

18 голосов
/ 24 сентября 2008

Поскольку это часть стандарта JSON

http://json.org/

символ

any-Unicode-character-
    except-"-or-\-or-
    control-character
\"
\\
\/ <---- see here?
\b
\f
\n
\r
\t
\u four-hex-digits
3 голосов
/ 08 января 2018

используйте это:

echo json_encode($a,JSON_HEX_TAG)

Результат будет:

["\u003C\u003E"]

Вы можете прочитать эту статью, чтобы улучшить свои знания о JSON_ENCODE http://php.net/manual/en/function.json-encode.php

2 голосов
/ 25 сентября 2008

Ваш ввод не является допустимым JSON, но PHP-анализатор JSON (как и большинство анализаторов JSON) все равно его проанализирует.

2 голосов
/ 24 сентября 2008

Это, вероятно, функция безопасности. Javascript (например, выходная версия) будет анализироваться как похожая на unescaped-версию (например, \/ становится /). После того, как вы избежали такой косой черты, браузер неправильно интерпретирует строку Javascript как HTML. Конечно, если вы обрабатываете данные правильно, это не нужно, так что это скорее защита от невежественного программиста, который все испортит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...