[php] 슬래시를 이스케이프 처리하는 json_encode ()

Instagram에서 JSON을 가져옵니다.

$instagrams = json_decode($response)->data;

그런 다음 변수를 PHP 배열로 구문 분석하여 데이터를 재구성 한 다음 파일을 다시 인코딩하고 캐싱하십시오.

file_put_contents($cache,json_encode($results));

캐시 파일을 열면 슬래시 “/”가 모두 이스케이프 처리됩니다.

http:\/\/distilleryimage4.instagram.com\/410e7...

json_encode()이 작업 을 자동으로 수행하는 검색에서 수집 합니다 … 사용 중지하는 방법이 있습니까?



답변

비활성화하는 방법이 있습니까?

예, JSON_UNESCAPED_SLASHES플래그 만 사용하면 됩니다.

! 중요한 글 : https://stackoverflow.com/a/10210367/367456 (당신이 다루고있는 것을 알고-적을 아십시오)

json_encode($str, JSON_UNESCAPED_SLASHES);

PHP 5.4가 없다면, 기존의 많은 기능 중 하나를 선택하여 필요에 따라 수정 하십시오 ( 예 : http://snippets.dzone.com/posts/show/7487 (아카이브 사본)). .

데모 예

<?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";

출력 예 :

"http:\/\/www.example.com\/"
"http://www.example.com/"


답변

. 그러나 슬래시를 이스케이프 처리 하지 않는 것이 좋습니다 . <script>태그 내부에서 JSON을 사용 </script>하는 경우 문자열 내부에서도 스크립트 태그를 종료해야합니다.

JSON이 사용되는 위치에 따라 필요하지 않지만 안전하게 무시할 수 있습니다.


답변

반대로, URL이 json_encoded 된 URL에 포함되어 있다고 주장하는 PHPUNIT에 문제가 있습니다.

내 예상 :

http://localhost/api/v1/admin/logs/testLog.log

다음과 같이 인코딩됩니다.

http:\/\/localhost\/api\/v1\/admin\/logs\/testLog.log

비교가 필요한 경우 다음을 사용하여 URL을 변환하십시오.

addcslashes($url, '/')

내 비교 중에 적절한 출력을 허용했습니다.


답변

나는 그런 상황을 겪어야만했다.

str_replace("\/","/",$variable)

나를 위해 일했다.


답변

슬래시를 벗어날 필요가 없습니다! HTML5와 JS는 ‘인용 부호뿐만 아니라’인용 부호도 사용할 수 있습니다. 따라서 JSON에서는 다음을 입력하십시오.

    "index4":{"<a href='http://example.com'>example</a>"}

“v4”: [ “Audi e-tron Q4 Sportback은 MEPP Modular Electric Propulsion Platform을 완전히 활용합니다 (Volkswagen Group간에 공유)”],


답변