json_encode - print json php
json_encode() escapando barras diagonales (3)
¿Hay alguna forma de desactivarlo?
Sí, solo necesita usar el indicador JSON_UNESCAPED_SLASHES
.
! importante lea antes: https://stackoverflow.com/a/10210367/367456 (sepa con lo que está tratando - conozca a su enemigo)
json_encode($str, JSON_UNESCAPED_SLASHES);
Si no tiene PHP 5.4 a mano, elija una de las muchas funciones existentes y modifíquelas según sus necesidades, por ejemplo, http://snippets.dzone.com/posts/show/7487 (copia archivada) .
<?php
/*
* Escaping the reverse-solidus character ("/", slash) is optional in JSON.
*
* This can be controlled with the JSON_UNESCAPED_SLASHES flag constant in PHP.
*
* @link http://stackoverflow.com/a/10210433/367456
*/
$url = ''http://www.example.com/'';
echo json_encode($url), "/n";
echo json_encode($url, JSON_UNESCAPED_SLASHES), "/n";
Ejemplo de salida:
"http:////www.example.com//"
"http://www.example.com/"
Estoy sacando JSON de Instagram:
$instagrams = json_decode($response)->data;
A continuación, se analizan las variables en una matriz de PHP para reestructurar los datos y luego se vuelve a codificar y almacenar en caché el archivo:
file_put_contents($cache,json_encode($results));
Cuando abro el archivo de caché, todas mis barras diagonales "/" se están escapando:
http:////distilleryimage4.instagram.com//410e7...
De mis búsquedas, json_encode()
que json_encode()
hace esto automáticamente ... ¿hay alguna forma de desactivarlo?
Por otro lado, tenía un problema con PHPUNIT afirmando que las URL estaban contenidas en o igual a una url que estaba json_encoded -
mi esperado:
http://localhost/api/v1/admin/logs/testLog.log
estaría codificado para:
http:////localhost//api//v1//admin//logs//testLog.log
Si necesita hacer una comparación, transforma la url usando:
addcslashes($url, ''/'')
permitido el rendimiento adecuado durante mis comparaciones.
Yes , pero no lo hace: escapar de las barras diagonales es algo bueno . Cuando se usa JSON dentro de las etiquetas <script>
es necesario como </script>
cualquier lugar, incluso dentro de una cadena, terminará la etiqueta del script.
Dependiendo de dónde se use el JSON, no es necesario, pero se puede ignorar de forma segura.