배열에 담긴 모든 값을 urlencode 또는 urldecode 하기
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;
}
?>