Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP 문자열 배열에 백슬래시 추가하는 방법 – json_encode() 함수 활용하기

PHP에서 문자열 배열 안에 백슬래시(\)를 추가해야 하는 경우가 종종 있습니다. 예를 들어 JSON 데이터를 다시 한 번 인코딩하거나, 이스케이프 처리된 문자열이 필요할 때가 그렇습니다. 이럴 때 가장 간단하고 확실한 방법은 json_encode() 함수를 활용하는 것입니다.

기본 개념

json_encode()는 PHP 값을 JSON 형식의 문자열로 변환하는 함수입니다. 이 과정에서 문자열은 큰따옴표로 감싸지고, 내부의 특수문자는 자동으로 이스케이프 처리됩니다. 만약 이미 JSON으로 변환된 문자열을 한 번 더 json_encode()로 감싸면, 전체 문자열이 하나의 값으로 취급되면서 내부의 모든 큰따옴표 앞에 백슬래시가 붙게 됩니다.

예제: 변환 전 배열

다음과 같은 배열이 있다고 가정해 보겠습니다.

$value = [
    "ADD", "REMOVE", "SELECT", "MODIFY"
];

우리가 원하는 최종 결과는 배열의 각 요소와 대괄호가 백슬래시로 이스케이프 처리된 아래와 같은 문자열입니다.

"[\"ADD\",\"REMOVE\",\"SELECT\",\"MODIFY\"]"

전체 코드 예제

json_encode()를 두 번 중첩해서 호출하면 원하는 결과를 얻을 수 있습니다. 전체 코드는 다음과 같습니다.

<!DOCTYPE html>
<html>
<body>
<?php
    $value = [
        "ADD", "REMOVE", "SELECT", "MODIFY"
    ];
    echo json_encode(json_encode($value)) . "\n";
?>
</body>
</html>

실행 결과

위 코드를 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.

"[\"ADD\",\"REMOVE\",\"SELECT\",\"MODIFY\"]"

동작 원리 정리

코드의 동작 순서를 단계별로 살펴보면 다음과 같습니다.

1. 첫 번째 json_encode($value) 호출 시 배열이 JSON 문자열로 변환됩니다. → ["ADD","REMOVE","SELECT","MODIFY"]

2. 두 번째 json_encode() 호출 시 이 문자열 전체가 하나의 JSON 문자열 값으로 감싸지고, 내부의 큰따옴표 앞에 자동으로 백슬래시가 추가됩니다.

3. 최종적으로 이스케이프 처리된 문자열이 화면에 출력됩니다.

이처럼 json_encode()를 이중으로 사용하면 별도의 문자열 치환 작업 없이도 안전하게 백슬래시가 포함된 문자열을 생성할 수 있습니다. API 응답 데이터를 중첩 구조로 전달하거나, JSON 문자열 자체를 데이터로 저장해야 하는 상황에서 유용하게 활용할 수 있습니다.