누구든지 json_encode 및 json_decode를 사용 하여이 PHP 코드를 설명 할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/127739

  •  02-07-2019
  •  | 
  •  

문제

  $a = '{ "tag": "<b></b>" }';
  echo json_encode( json_decode($a) );

이 출력 :

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

당신이 그것이 정확히 입력을 출력 할 것이라고 생각할 때. 어떤 이유로 json_encode는 추가 슬래시를 추가합니다.

도움이 되었습니까?

해결책

JSON 표준의 일부이기 때문입니다

http://json.org/

any-Unicode-character-
    except-"-or-\-or-
    control-character
\"
\\
\/ <---- see here?
\b
\f
\n
\r
\t
\u four-hex-digits

다른 팁

이것을 사용하십시오 :

echo json_encode($a,JSON_HEX_TAG)

결과는 다음과 같습니다.

["\u003C\u003E"]

이 기사를 읽으려면 JSON_ENCODE에 대한 지식을 향상시킬 수 있습니다.http://php.net/manual/en/function.json-encode.php

그것은 아마도 보안 기능 일 것입니다. 탈출 된 버전 (예 : 출력)은 javaScript (예 : \/ becomes /). 슬래시를 피한 후 브라우저가 JavaScript-String을 HTML로 잘못 해석 할 가능성이 적습니다. 물론, 데이터를 올바르게 처리한다면, 이것은 필요하지 않아야하므로, 단서가없는 프로그래머가 자신을 위해 물건을 엉망으로 만드는 것에 대한 보호 수단입니다.

입력은 유효한 JSON이 아니지만 PHP의 JSON 파서 (대부분의 JSON 파서)는 어쨌든이를 구문 분석합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top