차근차근/PHP

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

예쁜꽃이피었으면 2014. 9. 2. 16:40

http://blog.munilive.com/%EB%B0%B0%EC%97%B4%EC%97%90-%EB%8B%B4%EA%B8%B4-%EB%AA%A8%EB%93%A0-%EA%B0%92%EC%9D%84-urlencode-%EB%98%90%EB%8A%94-urldecode-%ED%95%98%EA%B8%B0/



웹사이트 작업을 하다보면 배열에 값을 담아 넘겨줄때가 있다. 한글 데이터도 보내고 url 등도 보내기도 하며 javascript 에서 사용하기 위하여 json 등으로 보내기도 한다.

이럴때 한글이나 url 등과 같은 특수 문자가 들어가는 데이터는 종종 오류를 내거나 한글의 경우는 한글이 깨져서 출력되는 경우가 있다.
그럴경우 urlencode 로 인코딩을 해서 데이터를 보내면 에러 없이 전송이 가능하다.

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

참고페이지 : http://blog.munilive.com/ex/php/urlencode.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// 인코딩
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;
}


반응형