rawurlencode
将字串编码成 URL 专用格式。语法: string rawurldecode(string str);传回值: 字串函式种类: 编码处理
 
 
内容说明 
本函式将字串编码成 URL 的字串专用格式,特殊的字元会转换成百分比符号后面加上二个十六位元数字的格式。例如,空格就会变成 %20。

解决方案 »

  1.   

    unescape() 和 rawurldecode() 的结果是不同的。
      

  2.   

    function escape($str) {
      preg_match_all("/[\x80-\xff].|[\x01-\x7f]+/",$str,$r);
      $ar = $r[0];
      foreach($ar as $k=>$v) {
        if(ord($v[0]) < 128)
          $ar[$k] = rawurlencode($v);
        else
          $ar[$k] = "%u".bin2hex(iconv("GB2312","UCS-2",$v));
      }
      return join("",$ar);
    }function unescape($str) {
      $str = rawurldecode($str);
      preg_match_all("/(?:%u.{4})|.+/",$str,$r);
      $ar = $r[0];
      foreach($ar as $k=>$v) {
        if(substr($v,0,2) == "%u" && strlen($v) == 6)
          $ar[$k] = iconv("UCS-2","GB2312",pack("H4",substr($v,-4)));
      }
      return join("",$ar);
    }要求iconv函数可用(iconv扩展库已加载),否则需要自行编程查表