Estou puxando JSON do Instagram:
$instagrams = json_decode($response)->data;
Em seguida, analise as variáveis em uma matriz PHP para reestruturar os dados, recodifique e armazene em cache o arquivo:
file_put_contents($cache,json_encode($results));
Quando abro o arquivo de cache, todas as minhas barras "/" estão sendo escapadas:
http:\/\/distilleryimage4.instagram.com\/410e7...
Eu recolho das minhas pesquisas que json_encode()
faz isso automaticamente ... existe uma maneira de desativá-lo?
Respostas:
Sim, você só precisa usar a
JSON_UNESCAPED_SLASHES
bandeira.Se você não possui o PHP 5.4 em mãos, escolha uma das muitas funções existentes e modifique-as de acordo com suas necessidades, por exemplo, http://snippets.dzone.com/posts/show/7487 (cópia arquivada) .
Demo de exemplo
Saída de exemplo:
fonte
strip_slashes
e para JS phpjs.org/functions/stripslashes\/
como sequência de escape válida/
) , consulte stackoverflow.com/a/10210367/367456 também.JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES
deve ser padrão, não (estranha) ... Como dizê-lo aos desenvolvedores php?Sim , mas não - escapar de barras é uma coisa boa . Ao usar JSON dentro de
<script>
tags, é necessário que</script>
qualquer lugar - mesmo dentro de uma string - termine a tag de script.Dependendo de onde o JSON é usado, não é necessário, mas pode ser ignorado com segurança.
fonte
"\/"
é exatamente o mesmo que o valor da string"/"
- e um analisador JSON em funcionamento o tratará como tal. A mesma regra se aplica às seqüências de caracteres javascript, portanto, alimentar JSON como um código javascript também não terá problemas. Estou surpreso que o PHP tenha aJSON_UNESCAPED_SLASHES
bandeira.Por outro lado, eu estava tendo um problema com o PHPUNIT ao afirmar que os URLs estavam contidos ou eram iguais a um URL que era json_encoded -
meu esperado:
http://localhost/api/v1/admin/logs/testLog.log
seria codificado para:
http:\/\/localhost\/api\/v1\/admin\/logs\/testLog.log
Se você precisar fazer uma comparação, transformando o URL usando:
addcslashes($url, '/')
permitido a saída adequada durante minhas comparações.
fonte
Eu tive que encontrar uma situação como tal, e simplesmente, o
funcionou para mim.
fonte
Você não precisa escapar de barras! HTML5 e JS permitem usar 'aspas e "aspas. Portanto, em JSON, digite:
Veja o site ev.bingo como exemplo de trabalho: "v4": ["O Audi e-tron Q4 Sportback utiliza totalmente uma plataforma de propulsão elétrica modular MEPP, que é compartilhada entre o Grupo Volkswagen"],
fonte