¿Alguien puede explicar este código PHP usando json_encode y json_decode?

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

  •  02-07-2019
  •  | 
  •  

Pregunta

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

Esto produce:

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

cuando pensarías que generaría exactamente la entrada. Por alguna razón, json_encode agrega una barra adicional.

¿Fue útil?

Solución

Porque es parte del estándar JSON

http://json.org/

  

char

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

Otros consejos

usa esto:

echo json_encode($a,JSON_HEX_TAG)

El resultado será:

["\u003C\u003E"]

Puedes leer este artículo para mejorar tu conocimiento sobre JSON_ENCODE http://php.net/manual/en/function.json-encode. php

Esa es probablemente una característica de seguridad. La versión de escape (por ejemplo, la salida) se analizaría como similar a la versión sin escape, por Javascript (por ejemplo, \ / se convierte en / ). Habiendo escapado de la barra así, hay menos posibilidades de que el navegador malinterprete la cadena de Javascript como HTML. Por supuesto, si trata los datos correctamente, esto no debería ser necesario, por lo que es más una protección contra un programador despistado que arruina las cosas por sí mismo.

Su entrada no es JSON válida, pero el analizador JSON de PHP (como la mayoría de los analizadores JSON) lo analizará de todos modos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top