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, 0, 1) != "%")
09. {
10. $c .= $val;
11. } elseif (substr($val, 1, 1) != "u")
12. {
13. $x = hexdec(substr($val, 1, 2));
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""''<>&&