배열에 담긴 모든 값을 urlencode 또는 urldecode 하기

munilive
munilive

웹사이트 작업을 하다 보면 배열에 값을 담아 넘겨줄 때가 있다. 한글 데이터도 보내고 url 등도 보내기도 하며 Javascript에서 사용하기 위하여 json 등으로 보내기도 한다.
이럴 때 한글, url등과 같은 특수 문자가 들어가는 데이터는 종종 오류를 내 거나 한글의 경우는 한글이 깨져서 출력되는 경우가 있다.
그럴 경우 urlencode로 인코딩을 해서 데이터를 보내면 에러 없이 전송이 가능하다.

아래 함수는 배열로 담아둔 모든 값을 rawurlencode로 한 번에 인코딩시키는 것과 반대로 배열에 담아둔 모든 값을 rawurldecode로 디코딩시키는 함수이다.
배열에 담겨있지 않는 일반 문자열로 사용이 가능하고 1차 배열만이 아니라 다중배열도 하위 상관없이 모두 변환시켜준다.

<?php
// 인코딩
function str_urlencode($data) {
    if(is_array($data)) {
        foreach($data AS $k => $v) {
            if(is_array($v)) $new_data[$k] = str_urlencode($v);
            else $new_data[$k] = rawurlencode($v);
        }
    } else {
        $new_data = rawurlencode($data);
    }

    return $new_data;
}

// 디코딩
function str_urldecode($data) {
    if(is_array($data)) {
        foreach($data AS $k => $v) {
            if(is_array($v)) $new_data[$k] = str_urldecode($v);
            else $new_data[$k] = rawurldecode($v);
        }
    } else {
        $new_data = rawurldecode($data);
    }

    return $new_data;
}
?>
munilive

munilive

Backend Application Developer

Share

Comments

Related Posts

$_SERVER[QUERY_STRING] 특정 파라미터 삭제 출력하기

$_SERVER[QUERY_STRING] 특정 파라미터 삭제 출력하기

게시판의 Paging 처리 시 QueryString으로 데이터를 전달할 때 paging을 위해 추가한 변수명이 겹치지 않게 하기 위해 만든 함수에 대한 설명이다.

munilive munilive ·
GD를 이용한 기본기능 썸네일,CROP,CROP썸네일,텍스트 만들기에 기능추가

GD를 이용한 기본기능 썸네일,CROP,CROP썸네일,텍스트 만들기에 기능추가

GD 라이브러리를 이용한 Thumbnail 생성 클래스 코드 설명입니다.

munilive munilive ·
php 생년월일로 별자리 구하기

php 생년월일로 별자리 구하기

사용자의 생년월일을 이용해서 별자리 코드를 반환하는 PHP 함수 예제입니다.

munilive munilive ·