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

munilive
Written by munilive on (Updated: )

웹사이트 작업을 하다 보면 배열에 값을 담아 넘겨줄 때가 있다. 한글 데이터도 보내고 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;
}
?>

Comments

comments powered by Disqus