http://phpschool.com/link/tipntech/65180
다들 아시는 내용이겠지만..... 혹시나 모르시는 분들을 위해서 올립니다.
javascript escape/unescape 를 php로 구현해놓은게 여기 스쿨의 팁텍에도 올라와 있는데요.
http://phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=60918&sca=&sfl=wr_subject||wr_content&stx=unescape&sop=and
'+'를 띄어쓰기로 변환하는 오류가 있고, 그밖에 영문까지 변환(변환해도 문제는 없습니다.)하는 현상이 있어서 다시 정리해 봤습니다.
혹시 오류가 있으면 지적해 주세요....
<?php
function js_escape($str, $chr_set='CP949')
{
$arr_dec = unpack("n*", iconv($chr_set, "UTF-16BE", $str));
$callback_function = create_function('$dec', 'if(in_array($dec, array(42, 43, 45, 46, 47, 64, 95))) return chr($dec); elseif($dec >= 127) return "%u".strtoupper(dechex($dec)); else return rawurlencode(chr($dec));');
$arr_hexcode = array_map($callback_function, $arr_dec);
return implode($arr_hexcode);
}
function js_unescape($str, $chr_set='CP949')
{
$callback_function = create_function('$matches, $chr_set="'.$chr_set.'"', 'return iconv("UTF-16BE", $chr_set, pack("n*", hexdec($matches[1])));');
return rawurldecode(preg_replace_callback('/%u([[:alnum:]]{4})/', $callback_function, $str));
}
$str = '?&=*+-./@_%abcd 한글';
$escape = js_escape($str);
$unescape = js_unescape($escape);
echo $str,' | ',$escape,' | ',$unescape,'<br>';
?>
<script>
document.write('?&=*+-./@_%abcd 한글 | '+escape('?&=*+-./@_%abcd 한글')+' | '+unescape('<?=$escape?>'));
</script>
+)javascript escape는 '+'를 변환하지 않습니다.
그러므로 unescape도 '+'를 변환하지 않아야되는데, 이전에 팁텍에 올라온 소스는 unescape시에 '+'를 공백으로 변환하는 오류가 있어요.
'차근차근 > PHP' 카테고리의 다른 글
배열에 담긴 모든 값을 urlencode 또는 urldecode 하기 (0) | 2014.09.02 |
---|---|
[함수] javascript escape,unescape by PHP (0) | 2014.09.02 |
[함수] php 서버에서 json escape unescape 하는 예제입니다. (0) | 2014.09.02 |
유용한 함수 - json_decode,json_encode (0) | 2014.09.02 |
php소스코드만 따로 콘솔창에서 실행 (0) | 2014.08.29 |