这篇文章主要介绍了PHP解码unicode编码 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下function unicode_decode($name) {
//方法一
$name = str_replace("\\\\u","\u",$name); $json = '{"str":"'.$name.'"}'; $arr = json_decode($json,true); if(empty($arr)) return '';
return $arr['str']; //方法二
// 转换编码,将Unicode编码转换成可以浏览的utf-8编码
$pattern = '/([\w]+)|(\\\u([\w]{4}))/i';
preg_match_all($pattern, $name, $matches);
if (!empty($matches))
{
$name = '';
for ($j = 0; $j < count($matches[0]); $j++)
{
$str = $matches[0][$j];
if (strpos($str, '\\u') === 0)
{
$code = base_convert(substr($str, 2, 2), 16, 10);
$code2 = base_convert(substr($str, 4), 16, 10);
$c = chr($code).chr($code2);
$c = iconv('UCS-2', 'UTF-8', $c);
$name .= $c;
}
else
{
$name .= $str;
}
}
}
return $name;
}
以下是网上找的方法:
方案A(稳定版+推荐):function replace_unicode_escape_sequence($match) {
return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE');
}$name = '\u65b0\u6d6a\u5fae\u535a';$str = preg_replace_callback('/\\\\u([0-9a-f]{4})/i', 'replace_unicode_escape_sequence', $name);echo $str; //输出: 新浪微博//咱将上述方案A给封装起来~~~(方案A稳定版+升级+推荐)class Helper_Tool{
static function unicodeDecode($data)
{
function replace_unicode_escape_sequence($match) {
return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE');
}
$rs = preg_replace_callback('/\\\\u([0-9a-f]{4})/i', 'replace_unicode_escape_sequence', $data); return $rs;
}
}//调用$name = '\u65b0\u6d6a\u5fae\u535a';$data = Helper_Tool::unicodeDecode($name); //输出新浪微博
方案B(次推荐):<?phpfunction unicodeDecode($name){
$json = '{"str":"'.$name.'"}'; $arr = json_decode($json,true); if(empty($arr)) return '';
return $arr['str'];
}$name = '\u65b0\u6d6a\u5fae\u535a';echo unicodeDecode($name); //输出: 新浪微博
相关推荐: