Apr
11

模仿JAVASCRIPT的ESCAPE和UNESCAPE函数的功能     2009

 09:34    425    0   noel 程序 代码 源码 不指定 | |
模仿JAVASCRIPT的ESCAPE和UNESCAPE函数的功能

<?
class coding {
     //模仿JAVASCRIPT的ESCAPE和UNESCAPE函数的功能
    function unescape($str){
        $text = preg_replace_callback("/%u[0-9A-Za-z]{4}/",array( &$this, 'toUtf8'),$str);
        return mb_convert_encoding($text, "gb2312", "utf-8");
    }
    
    function toUtf8($ar){
        foreach($ar as $val){
            $val = intval(substr($val,2),16);
            if($val < 0x7F){ // 0000-007F
                $c .= chr($val);
            }elseif($val < 0x800) { // 0080-0800
                $c .= chr(0xC0 | ($val / 64));
                $c .= chr(0x80 | ($val % 64));
            }else{ // 0800-FFFF
                $c .= chr(0xE0 | (($val / 64) / 64));
                $c .= chr(0x80 | (($val / 64) % 64));
                $c .= chr(0x80 | ($val % 64));
            }
        }
    return $c;
    }
    
    function escape($string, $encoding = 'gb2312') {
      $return = '';
      for ($x = 0; $x < mb_strlen($string, $encoding); $x ++) {
        $str = mb_substr($string, $x, 1, $encoding);
        if (strlen($str) > 1) { // 多字节字符
          $return .= '%u' . strtoupper(bin2hex(mb_convert_encoding($str, 'UCS-2', $encoding)));
        } else {
          $return .= '%' . strtoupper(bin2hex($str));
        }
      }
      return $return;
    }
    
    function gb2utf8($string, $encoding = 'utf-8',$from_encode='gb2312') {
      return mb_convert_encoding($string,$encoding,$from_encode);
    }

}
?>




函数描述及例子


在不支持iconv的空间上模仿javascript的编码
可以用来做AJAX传递中文用

$coding=new coding();
$string_escape=$coding->escape("四川");
$string_unescape=$coding->unescape("%u56DB%u5DDD");
echo $string_escape.$string_unescape

作者:noel@淘宝网女装新款秋装连衣裙裤子外套上衣_2012时尚女装新款 Ecmall二次开发-PHP技术
地址:http://www.laohucheng.com/post/286/
版权所有©转载时必须以链接形式注明作者和原始出处及本声明!

Tags: 引用(0)
发表评论
昵称 [注册]
密码 游客无需密码
网址
电邮
打开HTML 打开UBB 打开表情 隐藏 记住我