php提供的URL编码函数是基于字节的,对由ie的javascript函数escape编码的数据就无能为力了。
因此在此共享本人的php版的escape/unescape函数
function
escape(
$str
) {
preg_match_all
(
"
/[-ÿ].|[-]+/
"
,
$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
);
}
