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

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);
  15. }