public
static
function
unescape(
$str
,
$encode
=
'UTF-8'
)
{
$encode
=
strtoupper
(
$encode
);
if
(
$encode
==
'GBK'
||
$encode
==
'GB2312'
)
{
$substrStrNum
= 2;
}
else
{
$substrStrNum
= 3;
}
$str
= rawurldecode(
$str
);
preg_match_all(
'#%u.{4}|&#x.{4};|&#\d+;|&#\d+?|.+#U'
,
$str
,
$r
);
$ar
=
$r
[0];
foreach
(
$ar
as
$k
=>
$v
)
{
if
(
substr
(
$v
, 0, 2) ==
"%u"
)
{
$ar
[
$k
] = iconv(
"UCS-2BE"
,
$encode
, pack(
"H4"
,
substr
(
$v
, -4)));
}
elseif
(
substr
(
$v
, 0, 3) ==
"&#x"
)
{
$ar
[
$k
] = iconv(
"UCS-2BE"
,
$encode
, pack(
"H4"
,
substr
(
$v
,
$substrStrNum
, -1)));
}
elseif
(
substr
(
$v
, 0, 2) ==
"&#"
)
{
$ar
[
$k
] = iconv (
"UCS-2BE"
,
$encode
, pack (
"n"
, preg_replace (
'#[^\d]#'
,
''
,
$v
) ) );
}
}
return
join (
''
,
$ar
);
}