首页 > 语言 > PHP > 正文

javascript unescape() escape() 字符编码解码函数

2024-09-04 11:47:46
字体:
来源:转载
供稿:网友

escape()函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。

语法:escape(string) 参数:string 必需,描述:要被转义或编码的字符串。

返回值:已编码的 string 的副本。其中某些字符被替换成了十六进制的转义序列

  1. function phpescape($str)  
  2. {  
  3.          $sublen=strlen($str);  
  4.          $retrunstring="";  
  5.          for ($i=0;$i<$sublen;$i++)  
  6.          {  
  7.                   if(ord($str[$i])>=127)  
  8.                   {  
  9.                            $tmpstring=bin2hex(iconv("gb2312","ucs-2",substr($str,$i,2)));  
  10.                            //$tmpstring=substr($tmpstring,2,2).substr($tmpstring,0,2);window下可能要打开此项  
  11.                            $retrunstring.="%u".$tmpstring;  
  12.                            $i++;  
  13.                   } else {  
  14.                            $retrunstring.="%".dechex(ord($str[$i]));  
  15.                   }  
  16.          }  
  17.          return $retrunstring;  
  18. }  

unescape() 函数可对通过 escape() 编码的字符串进行解码。

语法:unescape(string)参数:string 必需,描述:要解码或反转义的字符串。

返回值:string 被解码后的一个副本。

说明:该函数的工作原理是这样的:通过找到形式为 %xx 和 %uxxxx 的字符序列(x 表示十六进制的数字),用 unicode 字符 u00xx 和 uxxxx 替换这样的字符序列进行解码。

  1. function unescape($str) {  
  2.          $str = rawurldecode($str);  
  3.          preg_match_all("/%u.{4}|&#x.{4};|&#d+;|.+/u",$str,$r);  
  4.          $ar = $r[0];  
  5.          foreach($ar as $k=>$v) {  
  6.                   if(substr($v,0,2) == "%u")  
  7.                            $ar[$k] = iconv("ucs-2","gbk",pack("h4",substr($v,-4)));  
  8.                   elseif(substr($v,0,3) == "&#x")  
  9.                            $ar[$k] = iconv("ucs-2","gbk",pack("h4",substr($v,3,-1)));  
  10.                   elseif(substr($v,0,2) == "&#") {  
  11.                            $ar[$k] = iconv("ucs-2","gbk",pack("n",substr($v,2,-1)));  
  12.                   }  
  13.          }  
  14.          return join("",$ar);  

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表