php正确解码javascript中通过escape编码后的字符

js的escape如何在PHP中来解呢?

下面的这个函数可以正确的解析,网上有不少unescape的函数,但好用的不多.

这是很久以前收集的一个,不知道谁写的了,但经过测试没有问题~

JavaScript代码

代码

01.function phpUnescape($escstr)   
02.{   
03.    preg_match_all("/%u[0-9A-Za-z]{4}|%.{2}|[0-9a-zA-Z.+-_]+/", $escstr, $matches);   
04.    $ar = &$matches[0];   
05.    $c = "";   
06.    foreach($ar as $val)   
07.    {   
08.        if (substr($val, 01!= "%")   
09.        {   
10.            $c .= $val;   
11.        } elseif (substr($val, 11!= "u")   
12.        {   
13.            $x = hexdec(substr($val, 12));   
14.            $c .= chr($x);   
15.        }    
16.        else  
17.        {   
18.            $val = intval(substr($val, 2), 16);   
19.            if ($val < 0x7F// 0000-007F   
20.            {   
21.                $c .= chr($val);   
22.            } elseif ($val < 0x800// 0080-0800   
23.            {   
24.                $c .= chr(0xC0 | ($val / 64));   
25.                $c .= chr(0x80 | ($val % 64));   
26.            }    
27.            else // 0800-FFFF   
28.            {   
29.                $c .= chr(0xE0 | (($val / 64/ 64));   
30.                $c .= chr(0x80 | (($val / 64% 64));   
31.                $c .= chr(0x80 | ($val % 64));   
32.            }    
33.        }    
34.    }    
35.  
36.    return $c;   
37.}  

escape编码后:

%u6D4B%u8BD5www.koyoz.com%22%22%27%27%3C%3E%26%26

解码后:

测试www.koyoz.com""''<>&&

 

 

 

 

摘自:http://www.koyoz.com/blog/?action=show&id=207

posted on 2010-01-28 12:34  visoeclipse->jor  阅读(331)  评论(2编辑  收藏  举报