목차
JSON을 피하는 규칙을 이해합니다
)" > 여분의 백 슬래시가있는 이유는 무엇입니까? ( \\ , \" )
PHP에서 JSON 인코딩 옵션 사용
사용자 입력 및 특수 문자 처리
JSON 오류 디버깅
요약 : 모범 사례
백엔드 개발 PHP 튜토리얼 탈출 디코딩 : PHP를 사용하여 JSON의 슬래시 및 특수 캐릭터 처리

탈출 디코딩 : PHP를 사용하여 JSON의 슬래시 및 특수 캐릭터 처리

Jul 28, 2025 am 04:41 AM
PHP Escape Characters

PHP의 JSON 슬래시 및 특수 문자를 올바르게 처리하려면 탈출 메커니즘을 이해하고 적절한 옵션을 사용해야합니다. 1. 출력에 표시되는 추가 백 슬래시는 합법적 인 JSON 형식에 필요하며 구문 분석 후 정상으로 돌아갑니다. 2. JSON_UNESCAPED_SLASHES를 사용하여 슬래시가 탈출되지 않아 URL을 더 명확하게합니다. 3. 4. 입력이 UTF-8 인코딩 및 설정 헤더인지 확인하십시오 ( 'Content-Type : Application/JSON; charset = utf-8'); 5. 백 슬래시를 수동으로 추가하지 않으면 json_encode ()에 의해 자동으로 처리되어야합니다. 6. 오류가 발생하면 JSON_LAST_ERROR ()를 통한 문제 해결. 일반적인 문제에는 NOTF-8 문자열, 원형 참조 또는 자원 유형이 포함됩니다. 7. 정확성을 보장하기 위해 항상 JavaScript 및 기타 환경에서 JSON 출력의 구문 분석 결과를 확인하십시오. 결국, 당신은 json_encode ()를 신뢰하고 플래그 비트와 함께 출력을 최적화해야합니다.

"탈출

PHP에서 JSON과 함께 작업 할 때는 슬래시 및 특수 문자를 올바르게 처리하는 것이 잔인합니다. 특히 사용자 입력, 파일 경로 또는 따옴표, 백 슬래시 또는 제어 문자가 포함 된 컨텐츠를 처리 할 때는 잔인합니다. 일반적인 Pain Point 개발자가 직면 한 것은 JSON 출력에서 예상치 못한 탈출 ( \/ 또는 \\ ) 또는 에스코지가없는 문자로 인한 오류를 구문 분석합니다. PHP가 이러한 사례를 처리하는 방법과 제대로 관리하는 방법을 세분화합시다.

"탈출

JSON을 피하는 규칙을 이해합니다

JSON은 어떤 캐릭터를 탈출 해야하는지에 대한 엄격한 규칙을 가지고 있습니다.

  • 이중 인용문 ( " ) → \"
  • 백 슬래시 ( \ ) → \\
  • 제어 문자 (Newline \n , Tab \t 등) → \n , \t
  • 전방 슬래시 ( / ) → 선택 사항 : \/ (HTML 스크립트 태그를 닫는 데 사용하지만 필요하지 않음)

PHP의 json_encode() 함수는 JSON 사양에 따라 탈출 해야하는 문자를 자동으로 이스케이프합니다. 그러나 이것은 때때로 혼란을 초래할 수 있습니다. 특히 여분의 백 슬래시를 볼 때.

"탈출

여분의 백 슬래시가있는 이유는 무엇입니까? ( \\ , \" )

출력에서 이중 배송 또는 탈출 된 인용문이 보이면 이러한 이유 중 하나 때문일 수 있습니다.

  • 실제 JSON 출력이 아니라 RAW PHP 문자열을보고 있습니다 .
  • 출력은 HTML 또는 JavaScript에 의해 처리되고 있으며 , 이는 백 슬래시를 다르게 해석 할 수 있습니다.
  • Magic Quotes (감가 상승) - 현대 PHP의 문제는 아니지만 배제 할 가치가 있습니다.

예:

"탈출
 $ data = [ 'path'=> 'c : \\ xampp \\ htdocs', 'desc'=> '그는 "Hello"'라고 말했다];
echo json_encode ($ data);

산출:

 { "Path": "C : \\\\ Xampp \\\\\ htdocs", "desc": "그는 \"hello \ ""} 말했다.

이것은 올바른 JSON입니다. 각 백 슬래시는 탈출됩니다 ( \\ 는 문자열에서 \\\\ 됩니다 \" .

JavaScript 또는 다른 JSON 디코더에 의해 구문 분석되면 다음이됩니다.

 C : \ xampp \ htdocs
그는 "안녕하세요"라고 말했습니다.

따라서 여분의 슬래시는 버그가 아닙니다. 유효한 JSON에는 필요합니다.


PHP에서 JSON 인코딩 옵션 사용

PHP는 json_encode() 동작 방식을 제어하기위한 몇 가지 플래그를 제공합니다.

 json_encode ($ data, json_unescaped_slashes | json_unescaped_unicode | json_unescaped_slashes);

일반적인 유용한 플래그 :

  • JSON_UNESCAPED_SLASHES -방지 </script> -스타일 탈출 : / as / , not \/
  • JSON_UNESCAPED_UNICODE \uXXXX 대신 utf-8 숯을 직접 출력합니다
  • JSON_HEX_QUOT - 인용문을 \u0022 로 이스케이프합니다 (드물게 필요하지 않음)
  • JSON_PRETTY_PRINT - 출력으로 출력을 읽을 수 있습니다

예:

 $ data = [ &#39;url&#39;=> &#39;https://example.com&#39;, &#39;message&#39;=> &#39;hi/hello&#39;];

echo json_encode ($ data);
// { "url": "https : \/\/example.com", "message": "hi \/hello"}

echo json_encode ($ data, json_unescaped_slashes);
// { "url": "https://example.com", "message": "hi/hello"}

HTML 스크립트 태그 안전이 필요하지 않고 클리너 URL을 원한다면 JSON_UNESCAPED_SLASHES 사용하십시오.


사용자 입력 및 특수 문자 처리

사용자 입력 (예 : 양식 또는 API)을 수락 할 때는 JSON을 인코딩하기 전에 항상 소독하고 검증하십시오.

 $ userInput = $ _post [ &#39;comment&#39;]; // 인용문, Newlines, Emojis를 포함 할 수 있습니다

$ data = [
    &#39;댓글&#39;=> $ userInput,
    &#39;타임 스탬프&#39;=> time ()
];

// 이것은 따옴표, Newlines 및 UTF-8을 올바르게 처리합니다
echo json_encode ($ data, json_unescaped_unicode);

JSON_UNESCAPED_UNICODE 가 없으면 이모티콘 또는 비 ASCII 텍스트 (예 : É, World)가 \u 시퀀스가됩니다. 깃발을 사용하면 인간이 읽을 수 있습니다.

또한 PHP 스크립트가 UTF-8을 사용하는지 확인하십시오.

 mb_internal_encoding ( &#39;utf-8&#39;);
헤더 ( &#39;content-type : application/json; charset = utf-8&#39;);

JSON 오류 디버깅

json_encode() 가 실패하면 json_last_error() 사용하여 이유를 찾으십시오.

 $ json = json_encode ($ data);
if ($ json === false) {
    스위치 (json_last_error ()) {
        사례 json_error_utf8 :
            Echo "UTF-8 인코딩 오류";
            부서지다;
        사례 json_error_recursion :
            에코 "재귀 배열 또는 객체";
            부서지다;
        CASE json_error_unsupported_type :
            Echo "지원되지 않은 유형의 객체";
            부서지다;
    }
}

일반적인 문제 :

  • NONTF-8 문자열 (예 : utf8_decode() 또는 레거시 인코딩의 예를 들어)
  • 물체/배열의 원형 참조
  • 인코딩 된 자원 또는 폐쇄 (허용되지 않음)

요약 : 모범 사례

PHP를 사용하여 JSON의 슬래시 및 특수 문자를 처리합니다.

  • JSON_UNESCAPED_SLASHESJSON_UNESCAPED_UNICODE 와 같은 적절한 플래그와 함께 json_encode() 사용하십시오.
  • ✅ 항상 문자열이 UTF-8 인코딩되어 있는지 확인하십시오
  • ✅ 슬래시를 수동 json_encode() 추가하지 마십시오
  • ✅ JavaScript 또는 다른 파서의 출력을 테스트하여 정확성을 확인합니다.
  • json_last_error() 사용하여 인코딩 오류를 확인하십시오.

핵심은 당신이 보는 여분의 백 슬래시가 종종 탈출 된 캐릭터가 문자열에 어떻게 나타나는지를 이해하는 것입니다. 그들은 구문 분석 할 때 올바르게 해결됩니다.

기본적으로 : json_encode() 신뢰하지만 클리너, 사용 가능한 출력을위한 올바른 옵션으로 조정하십시오.

위 내용은 탈출 디코딩 : PHP를 사용하여 JSON의 슬래시 및 특수 캐릭터 처리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제

백 슬래시를 탐색 :`preg_quote ()`및 Regex Escaping으로의 깊은 다이빙 백 슬래시를 탐색 :`preg_quote ()`및 Regex Escaping으로의 깊은 다이빙 Jul 26, 2025 am 09:51 AM

preg_quote()escapesregex-specialcharacters,includingbackslashesandthedelimiter,totreatthemasliterals;2.avoiddouble-escapingbypassingrawstrings(e.g.,'C:\path')withoutpre-escapedbackslashes;3.useforwardslashesinpathswhenpossibletoreducebackslashclutter

PHP의 HEREDOC 및 NOWDOC 구문에서 캐릭터 행동을 탈출하십시오 PHP의 HEREDOC 및 NOWDOC 구문에서 캐릭터 행동을 탈출하십시오 Jul 26, 2025 am 09:45 AM

Heredoc은 \ n, \ t, \\, \ $와 같은 가변 보간 및 기본 탈출 시퀀스를 처리하지만 \ "또는 \ '는 \"또는 \'를 처리하지 않지만 nowdoc은 가변 보간 및 탈출 처리를 수행하지 않습니다. \ n 및 변수를 포함한 모든 내용은 문자 그대로 출력됩니다. \ n Nowdoc에서는 적용됩니다.

안전하고 깨끗한 코드를위한 최신 PHP 탈출 패턴 안전하고 깨끗한 코드를위한 최신 PHP 탈출 패턴 Jul 26, 2025 am 09:51 AM

AlwaysecapeOutusingContext-specificmethods : htmlSpecialchars () forhtmlcontentandattributes, rawurlencode () forurls, andjson_en Code () withjson_hex_tag, json_hex_apos, json_hex_quot, andjson_unescaped_unicodeforjavaScript.2.usetemplatingEnginesliketwig, lara

싱글 대 이중 인용문 : 캐릭터 행동을 탈출하기위한 결정적인 안내서 싱글 대 이중 인용문 : 캐릭터 행동을 탈출하기위한 결정적인 안내서 Jul 28, 2025 am 04:44 AM

Inbash, SinglequotestreatAllCharacterslerally whilewoblequoteVariableexpansionandlimitedescaping; inpythonandjavaScript, bloquoTeTyShandleEscapesThesame, with withreadeafectingreadabilityand andconience bddingddingquotes, sousesinglequote

견해 강화 : XSS 방지에서`htmlspecialchars ()`의 중요한 역할 견해 강화 : XSS 방지에서`htmlspecialchars ()`의 중요한 역할 Jul 29, 2025 am 04:57 AM

HTMLSpecialchars ()는 XSS 공격에 대한 주요 방어선으로 특수 문자를 HTML 엔티티로 변환하여 브라우저에서 입력 한 컨텐츠가 실행 가능한 코드가 아닌 일반 텍스트로 취급되도록합니다. 1. 그것을 사용할 때는 취약점을 구문 분석하지 않도록 문자 인코딩 (예 : 'UTF-8')을 지정해야합니다. 2. ENT_QUOTES 플래그는 항상 속성 컨텍스트에서 주입을 방지하기 위해 단일 및 이중 인용문을 피할 수 있도록합니다. 3. 저장되지 않고 출력에서 탈출하고 데이터 고정화 및 반복 탈출을 피해야합니다. 4. 모든 XSS 만 방어하기 위해 의존 할 수는 없습니다. JavaScript 데이터를 처리하고 Rich Text에 htmlp를 사용하려면 urlencode (), json_encode ()와 함께 URL을 처리해야합니다.

`addslashes ()`: 강력한 SQL 주입 방어를위한 상황에 맞는 탈출 `addslashes ()`: 강력한 SQL 주입 방어를위한 상황에 맞는 탈출 Jul 26, 2025 am 02:55 AM

SQL 주입 보호는 다중 바이트 인코딩을 처리하지 않으며 유한 문자를 쉽게 우회 할 수 있기 때문에 AddSlashes ()에 의존 할 수 없습니다. 전처리 명세서 (예 : PDO 또는 MySQLI에 대한 매개 변수화 된 쿼리)는 입력이 코드에 구문 분석되지 않도록 SQL 로직에서 데이터를 분리하는 데 사용해야합니다. 전처리를 사용할 수없는 경우 데이터베이스 별 탈출 기능 (예 : real_escape_string 및 올바른 문자 세트 설정), 식별자 화이트리스트 또는 따옴표 마크 랩핑, 정수 입력 캐스팅 및 기타 방법을 사용하여 계층 적 방어를 달성해야합니다.

비교 분석 :`addSlashes ()`vs.`htmlspecialchars ()`vs.`mysqli_real_escape_string ()` 비교 분석 :`addSlashes ()`vs.`htmlspecialchars ()`vs.`mysqli_real_escape_string ()` Jul 27, 2025 am 04:27 AM

SQL 이스케이프는 안전하지 않고 SQL 주입으로부터 보호되지 않기 때문에 AddSlashes ()를 피해야합니다. htmlspecialchars ()는 XSS 공격을 방지하기 위해 HTML 출력에 사용됩니다. mysqli_real_escape_string ()은 mysql 쿼리에서 문자열 탈출에 사용될 수 있지만, 전처리 문을 사용할 수없는 경우에만 최적의 옵션 일뿐입니다. 1. AddSlashes ()는 구식이며 안전하지 않으며 현대적인 응용 분야에서 SQL 탈출에 사용해서는 안됩니다. 2. XSS를 방지하기 위해 사용자 입력을 출력하고 HTML로 출력 할 때 HTMLSpecialchars ()를 사용해야합니다. 3. mysqli_real_escape_string (

탈출 한 에스퍼 : PHP 문자열 및 경로에서 문자 그대로의 백 슬래시 처리 탈출 한 에스퍼 : PHP 문자열 및 경로에서 문자 그대로의 백 슬래시 처리 Jul 26, 2025 am 09:35 AM

BackslashesgomissinginPHPbecausetheyaretreatedasescapecharactersindouble-quotedstrings,sotofixthis:1.Usesinglequotesforliteralpathslike'C:\Users\John\Documents',2.Ordoublethebackslashesindoublequotesas"C:\\Users\\\\John\\Documents",3.Prefer

See all articles