IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

PHP的escape函数的实现方法

YOYO'S BLOG 2009-11-16 23:09:36 累计浏览 1,983 次
本机暂存

    很多时候需要用到js的escape函数来转换中文字符,可是用js转换后的字符怎么用php来转换回来呢,下面我就找到了两个很实用的函数。

    GB2312编码:

以下是代码片段:
function unescape($str) { 
       $str = rawurldecode($str); 
       preg_match_all("/%u.{4}|&#x.{4};|&#d+;|.+/U",$str,$r); 
       $ar = $r[0]; 
       foreach($ar as $k=>$v) { 
                if(substr($v,0,2) == "%u") 
                         $ar[$k] = iconv("UCS-2","GBK",pack("H4",substr($v,-4))); 
                elseif(substr($v,0,3) == "&#x") 
                         $ar[$k] = iconv("UCS-2","GBK",pack("H4",substr($v,3,-1))); 
                elseif(substr($v,0,2) == "&#") { 
                         $ar[$k] = iconv("UCS-2","GBK",pack("n",substr($v,2,-1))); 
                } 
       } 
       return join("",$ar); 
    }

    UTF8编码:

以下是代码片段:
function unescape($str){
          $ret = \’\’;
          $len = strlen($str);
          for ($i = 0; $i < $len; $i++){
                  if ($str[$i] == \’%\’ && $str[$i+1] == \’u\’){
                          $val = hexdec(substr($str, $i+2, 4));
                          if ($val < 0x7f) $ret .= chr($val);
                          else if($val < 0x800) $ret .= chr(0xc0|($val>>6)).chr(0x80|($val&0x3f));
                          else $ret .= chr(0xe0|($val>>12)).chr(0x80|(($val>>6)&0x3f)).chr(0x80|($val&0x3f));
                          $i += 5;
                  }
                  else if ($str[$i] == \’%\’){
                          $ret .= urldecode(substr($str, $i, 3));
                          $i += 2;
                  }
                  else $ret .= $str[$i];
          }
          return $ret;
    }

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. JQuery实现Excel表格呈现 (累计阅读 48,349)
  2. 使用gettext来支持PHP的多语言 (累计阅读 39,270)
  3. WordPress插件开发 -- 在插件使用数据库存储数据 (累计阅读 29,164)
  4. Paypal接口详细代码(PHP版,非API接口) (累计阅读 19,408)
  5. 深入理解Javascript之执行上下文(Execution Context) (累计阅读 18,404)
  6. 从输入 URL 到页面加载完成的过程中都发生了什么事情? (累计阅读 15,933)
  7. 图片动态局部毛玻璃模糊效果的实现 (累计阅读 14,849)
  8. 天朝第二代身份证号码的验证机制 (累计阅读 14,762)
  9. HTML 5 的data-* 自定义属性 (累计阅读 14,349)
  10. 分享一个JQUERY颜色选择插件 (累计阅读 14,223)