Ich ziehe JSON von Instagram:
$instagrams = json_decode($response)->data;
Analysieren Sie dann Variablen in ein PHP-Array, um die Daten neu zu strukturieren, und codieren Sie die Datei neu und zwischenspeichern Sie sie:
file_put_contents($cache,json_encode($results));
Wenn ich die Cache-Datei öffne, werden alle meine Schrägstriche "/" maskiert:
http:\/\/distilleryimage4.instagram.com\/410e7...
Ich habe bei meinen Suchanfragen json_encode()
festgestellt, dass dies automatisch geschieht. Gibt es eine Möglichkeit, dies zu deaktivieren?
Antworten:
Ja, Sie müssen nur die
JSON_UNESCAPED_SLASHES
Flagge verwenden.Wenn Sie nicht über PHP 5.4 verfügen, wählen Sie eine der vielen vorhandenen Funktionen aus und passen Sie sie an Ihre Bedürfnisse an, z. B. http://snippets.dzone.com/posts/show/7487 (archivierte Kopie) .
Beispiel Demo
Beispielausgabe:
quelle
strip_slashes
und für JS phpjs.org/functions/stripslashes\/
als gültige Escape-Sequenz für bezeichnet/
). Siehe auch stackoverflow.com/a/10210367/367456 .JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES
muss die Standardoption sein, nicht (seltsam) ... Wie sagt man es PHP-Entwicklern?Ja , aber nicht - es ist eine gute Sache, Schrägstrichen zu entkommen . Wenn Sie JSON in
<script>
Tags verwenden, ist es erforderlich, dass</script>
das Skript-Tag an einer beliebigen Stelle - auch innerhalb einer Zeichenfolge - beendet wird.Je nachdem, wo der JSON verwendet wird, ist er nicht erforderlich, kann jedoch ignoriert werden.
quelle
"\/"
genau dem Zeichenfolgenwert"/"
- und ein funktionierender JSON-Parser behandelt ihn als solchen. Die gleiche Regel gilt für Javascript-Zeichenfolgen, sodass das Füttern von JSON als Javascript-Code ebenfalls keine Probleme verursacht. Ich bin überrascht, dass PHP sogar dieJSON_UNESCAPED_SLASHES
Flagge hat.Auf der anderen Seite hatte ich ein Problem mit PHPUNIT, bei dem behauptet wurde, URLs seien in einer URL enthalten oder gleich dieser, die json_encoded war -
meine erwartete:
http://localhost/api/v1/admin/logs/testLog.log
würde verschlüsselt werden zu:
http:\/\/localhost\/api\/v1\/admin\/logs\/testLog.log
Wenn Sie einen Vergleich durchführen müssen, transformieren Sie die URL mit:
addcslashes($url, '/')
erlaubt für die richtige Ausgabe während meiner Vergleiche.
quelle
Ich musste auf eine Situation als solche stoßen, und einfach auf die
hat für mich gearbeitet.
quelle
Sie müssen keinen Schrägstrichen entkommen! In HTML5 und JS können sowohl Anführungszeichen als auch Anführungszeichen verwendet werden. In JSON gebe ich also Folgendes ein:
Siehe Website ev.bingo als Arbeitsbeispiel: "v4": ["Audi e-tron Q4 Sportback nutzt eine modulare elektrische Antriebsplattform MEPP, die vom Volkswagen Konzern gemeinsam genutzt wird"],
quelle