<?php
/*
*使用 PHP 解码 javascript escape() 编码过的字串为UTF-8
*例:1
*
*$tem=new UnEscape();
*echo $tem->getUtf8("%u624B%u673A%u95E8%u6237");
*echo $tem->getGb2312("%u624B%u673A%u95E8%u6237");
*/
function UnEscapeToUtf8($ar){
foreach($ar as $val){
$val = intval(substr($val,2),16);
if($val < 0x7F){ // 0000-007F
$c .= chr($val);
}elseif($val < 0x800) { // 0080-0800
$c .= chr(0xC0 | ($val / 64));
$c .= chr(0x80 | ($val % 64));
}else{ // 0800-FFFF
$c .= chr(0xE0 | (($val / 64) / 64));
$c .= chr(0x80 | (($val / 64) % 64));
$c .= chr(0x80 | ($val % 64));
}
}
return $c;
}
class UnEscape{
function getUtf8($value=""){
$text = preg_replace_callback("/%u[0-9A-Za-z]{4}/",UnEscapeToUtf8,$value);
return urldecode($text);
}
function getGb2312($value=""){
$text = preg_replace_callback("/%u[0-9A-Za-z]{4}/",UnEscapeToUtf8,$value);
$obj=new Gb2312Utf8();
return $obj->utf8ToGb2312(urldecode($text));
}
}
?>