Home > Article > Backend Development > PHP decode unicode encoding
这篇文章主要介绍了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); //输出: 新浪微博
相关推荐:
The above is the detailed content of PHP decode unicode encoding. For more information, please follow other related articles on the PHP Chinese website!