Estoy sacando a JSON de Instagram:
$instagrams = json_decode($response)->data;
Luego analiza las variables en una matriz PHP para reestructurar los datos, luego vuelve a codificar y almacenar en caché el archivo:
file_put_contents($cache,json_encode($results));
Cuando abro el archivo de caché se escapan todas mis barras diagonales "/":
http:\/\/distilleryimage4.instagram.com\/410e7...
De mis búsquedas deduzco que json_encode()
automáticamente hace esto ... ¿hay alguna forma de desactivarlo?
Respuestas:
Sí, solo necesitas usar la
JSON_UNESCAPED_SLASHES
bandera.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) .
Demo de ejemplo
Salida de ejemplo:
fuente
strip_slashes
y para JS phpjs.org/functions/stripslashes\/
como secuencia de escape válida para/
) , consulte stackoverflow.com/a/10210367/367456 también.JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES
opción debe ser predeterminada, no (extraña) ... ¿Cómo decirlo a los desarrolladores de php?Sí , pero no, escapar de las barras diagonales es algo bueno . Cuando se usa JSON dentro de las
<script>
etiquetas, es necesario ya que un</script>
lugar, incluso dentro de una cadena, finalizará la etiqueta del script.Dependiendo de dónde se use el JSON, no es necesario, pero se puede ignorar con seguridad.
fuente
"\/"
es exactamente el mismo que el valor de la cadena"/"
, y un analizador JSON en funcionamiento lo tratará como tal. La misma regla se aplica a las cadenas de JavaScript, por lo que alimentar JSON como un código de JavaScript tampoco tendrá problemas. Me sorprende que PHP incluso tenga laJSON_UNESCAPED_SLASHES
bandera.Por otro lado, estaba teniendo un problema con PHPUNIT afirmando que las URL estaban contenidas o eran iguales a una URL que estaba codificada por json_
mi esperado:
http://localhost/api/v1/admin/logs/testLog.log
estaría codificado para:
http:\/\/localhost\/api\/v1\/admin\/logs\/testLog.log
Si necesitas hacer una comparación, transforma la url usando:
addcslashes($url, '/')
permitió la salida adecuada durante mis comparaciones.
fuente
Tuve que enfrentar una situación como tal, y simplemente, el
funcionó para mí
fuente
¡No necesitas escapar de las barras diagonales! HTML5 y JS permiten usar 'comillas y comillas ". Así que en JSON escribo:
Consulte el sitio web ev.bingo como ejemplo de trabajo: "v4": ["Audi e-tron Q4 Sportback utiliza completamente una plataforma de propulsión eléctrica modular MEPP, que se comparte entre el Grupo Volkswagen"],
fuente