PHP中如何将unicode的十六进制转换成对应字符

2024-11-22 02:58:19
推荐回答(1个)
回答1:

/**
* 模拟JS里的unescape
*
* @param unknown_type $str
* @return unknown
*/
echo unescape('%u4E25');
function unescape($str) {
$str = rawurldecode($str);
preg_match_all("/(?:%u.{4})|.{4};|&#\d+;|.+/U",$str,$r);
$ar = $r[0];
#print_r($ar);
foreach($ar as $k=>$v) {
if(substr($v,0,2) == "%u")
$ar[$k] = iconv("UCS-2","GB2312",pack("H4",substr($v,-4)));
elseif(substr($v,0,3) == "")
$ar[$k] = iconv("野侍UCS-2","GB2312",pack("困首H4"颂尺吵,substr($v,3,-1)));
elseif(substr($v,0,2) == "&#") {
echo substr($v,2,-1)."
";
$ar[$k] = iconv("UCS-2","GB2312",pack("n",substr($v,2,-1)));
}
}
return join("",$ar);
}
?>