Je tire JSON d'Instagram:
$instagrams = json_decode($response)->data;
Ensuite, analyse des variables dans un tableau PHP pour restructurer les données, puis recodage et mise en cache du fichier:
file_put_contents($cache,json_encode($results));
Lorsque j'ouvre le fichier cache, toutes mes barres obliques "/" sont échappées:
http:\/\/distilleryimage4.instagram.com\/410e7...
Je récupère de mes recherches que json_encode()
cela fait automatiquement cela ... y a-t-il un moyen de le désactiver?
Réponses:
Oui, il vous suffit d'utiliser le
JSON_UNESCAPED_SLASHES
drapeau.Si vous n'avez pas PHP 5.4 à portée de main, choisissez l'une des nombreuses fonctions existantes et modifiez-la selon vos besoins, par exemple http://snippets.dzone.com/posts/show/7487 (copie archivée) .
Exemple de démonstration
Exemple de sortie:
la source
strip_slashes
et pour JS phpjs.org/functions/stripslashes\/
comme séquence d'échappement valide pour/
) , voir stackoverflow.com/a/10210367/367456 également.JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES
option doit être par défaut, pas (étrange) ... Comment le dire aux développeurs php?Oui , mais ne le faites pas - échapper aux barres obliques est une bonne chose . Lorsque vous utilisez JSON à l'intérieur des
<script>
balises, il est nécessaire car un</script>
n'importe où - même à l'intérieur d'une chaîne - terminera la balise de script.Selon l'endroit où le JSON est utilisé, ce n'est pas nécessaire, mais il peut être ignoré en toute sécurité.
la source
"\/"
est exactement la même que celle de la chaîne"/"
- et un analyseur JSON fonctionnant la traitera comme telle. La même règle s'applique aux chaînes javascript, donc alimenter JSON en tant que code javascript ne posera pas non plus de problèmes. Je suis surpris que PHP ait même leJSON_UNESCAPED_SLASHES
drapeau.D'un autre côté, j'avais un problème avec PHPUNIT affirmant que les URL étaient contenues ou égales à une URL qui était json_encoded -
mon attendu:
http://localhost/api/v1/admin/logs/testLog.log
serait encodé en:
http:\/\/localhost\/api\/v1\/admin\/logs\/testLog.log
Si vous avez besoin de faire une comparaison, transformez l'URL en utilisant:
addcslashes($url, '/')
permis la sortie correcte lors de mes comparaisons.
la source
J'ai dû rencontrer une situation en tant que telle, et simplement
a fonctionné pour moi.
la source
Vous n'avez pas besoin d'échapper aux barres obliques! HTML5 et JS permettent d'utiliser des guillemets "ainsi que des" guillemets. Donc, en JSON, je tape:
Voir le site Web ev.bingo comme exemple de travail: "v4": ["Audi e-tron Q4 Sportback utilise pleinement une plate-forme de propulsion électrique modulaire MEPP, qui est partagée par le groupe Volkswagen"],
la source