PHP解析\u60A8类似的字符串为中文

2014-08-28 08:20
有时候从API或别的地方中获取的数据中文都被转码了,类似u4E86u89E3u66F4u591A这样的,看到很蛋疼,于是从网上查找了相关资料,记录下来,方便自己以后使用,下面附上解码方式:
function code2utf($num){
    if($num<128)return chr($num);
    if($num<2048)return chr(($num>>6)+192).chr(($num&63)+128);
    if($num<65536)return chr(($num>>12)+224).chr((($num>>6)&63)+128).chr(($num&63)+128);
    if($num<2097152)return chr(($num>>18)+240).chr((($num>>12)&63)+128).chr((($num>>6)&63)+128).chr(($num&63)+128);
    return '';
}
 
function deu($s){
    return code2utf(hexdec($s));
}
 
function conv_js_utf8($s){
    return iconv('UTF-8', 'GBK', preg_replace('/(\u|%u)(....)/e','deu("\2")',$s));
}
 
$content = 'u4E86u89E3u66F4u591A';
$result = conv_js_utf8($content);

上面代码运行结果为:了解更多
^