programing

json_forwards() 이스케이프 슬래시

luckcodes 2022. 9. 27. 00:22

json_forwards() 이스케이프 슬래시

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플래그를 설정합니다(PHP 5.4+).

!important reader: https://stackoverflow.com/a/10210367/367456 (당신이 다루고 있는 것을 알고 있는 - 적을 알고 있는 경우: 웹/브로드 컨텍스트에서 사용하지 마십시오.CLI는 CGI가 적절하지 않은 한 가독성을 위해 JSON HTTP 컨텍스트에서 필요하다고 생각되면 다른 문제가 있습니다.)

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/"

, 하지만 그러지 마세요 - 앞으로 슬래시를 피하는 것은 좋은 일입니다.내부에서 JSON을 사용하는 경우<script>태그는 필수입니다.</script>스크립트 태그를 종료합니다.

JSON을 사용하는 위치에 따라서는 필요하지 않지만 무시해도 무방합니다.

반대로, 저는 PHPUNIT이 URL이 json_encoded인 URL에 포함되거나 동일하다고 주장하는 데 문제가 있었습니다.

내 예상:

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

부호화 대상:

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

비교가 필요한 경우 다음을 사용하여 URL을 변환합니다.

addcslashes($url, '/')

적절한 출력을 얻을 수 있습니다.

그런 상황에 직면해야 했고, 간단히 말해서

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

나한테는 효과가 있었어.

언급URL : https://stackoverflow.com/questions/10210338/json-encode-escaping-forward-slashes