차근차근/PHP

[함수] javascript escape,unescape by PHP

예쁜꽃이피었으면 2014. 9. 2. 01:23

http://phpschool.com/link/tipntech/60918


저도 구글링하다 찾은것을 좀 수정하고 버그픽스해서 올립니다. 




    /* 

    * javascript escape 대응함수 

    */ 

    function unescape($text) 

    { 

      return urldecode(preg_replace_callback('/%u([[:alnum:]]{4})/', create_function( 

                '$word', 

                'return iconv("UTF-16LE", "UHC", chr(hexdec(substr($word[1], 2, 2))).chr(hexdec(substr($word[1], 0, 2))));' 

                ), $text)); 

    } 

    

    /* 

    * javascript escape 대응함수 

    */ 

    function escape($str) 

    { 

      $len = strlen($str); 

      for($i=0,$s='';$i<$len;$i++) { 

          $ck = substr($str,$i,1); 

          $ascii = ord($ck); 

          if($ascii > 127) $s .= '%u'.toUnicode(substr($str, $i++, 2)); 

          else $s .= (in_array($ascii, array(42, 43, 45, 46, 47, 64, 95))) ? $ck : '%'.strtoupper(dechex($ascii)); 

      } 

      return $s; 

    } 

    

    function toUnicode($word) { 

      $word = iconv('UHC', 'UTF-16LE', $word); 

      return strtoupper(str_pad(dechex(ord(substr($word,1,1))),2,'0',STR_PAD_LEFT).str_pad(dechex(ord(substr($word,0,1))),2,'0',STR_PAD_LEFT)); 

    }

반응형