>  기사  >  백엔드 개발  >  PHP 디코드 유니코드 인코딩

PHP 디코드 유니코드 인코딩

不言
不言원래의
2018-04-24 13:54:538775검색

这篇文章主要介绍了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, &#39;\\u&#39;) === 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(&#39;UCS-2&#39;, &#39;UTF-8&#39;, $c);  
                $name .= $c;  
            }  
            else  
            {  
                $name .= $str;  
            }  
        }  
    }  
    return $name;  
}


以下是网上找的方法:
方案A(稳定版+推荐):

function replace_unicode_escape_sequence($match) {
  return mb_convert_encoding(pack(&#39;H*&#39;, $match[1]), &#39;UTF-8&#39;, &#39;UCS-2BE&#39;);
}$name = &#39;\u65b0\u6d6a\u5fae\u535a&#39;;$str = preg_replace_callback(&#39;/\\\\u([0-9a-f]{4})/i&#39;, &#39;replace_unicode_escape_sequence&#39;, $name);echo $str; //输出: 新浪微博
//咱将上述方案A给封装起来~~~(方案A稳定版+升级+推荐)class Helper_Tool{
  static function unicodeDecode($data)
  {  
    function replace_unicode_escape_sequence($match) {
      return mb_convert_encoding(pack(&#39;H*&#39;, $match[1]), &#39;UTF-8&#39;, &#39;UCS-2BE&#39;);
    }  

    $rs = preg_replace_callback(&#39;/\\\\u([0-9a-f]{4})/i&#39;, &#39;replace_unicode_escape_sequence&#39;, $data);    return $rs;
  }  
}//调用$name = &#39;\u65b0\u6d6a\u5fae\u535a&#39;;$data = Helper_Tool::unicodeDecode($name); //输出新浪微博

方案B(次推荐):

<?phpfunction unicodeDecode($name){
  $json = &#39;{"str":"&#39;.$name.&#39;"}&#39;;  $arr = json_decode($json,true);  if(empty($arr)) return &#39;&#39;; 
  return $arr[&#39;str&#39;];
}$name = &#39;\u65b0\u6d6a\u5fae\u535a&#39;;echo unicodeDecode($name); //输出: 新浪微博

相关推荐:

php解码js使用escape转码的函数

위 내용은 PHP 디코드 유니코드 인코딩의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.