php把unicode编码字符转成utf-8格式

最近在采集的时候,遇到写特殊的编码体整个页面所有的汉字都是统一的字符如下:

 

1

\u54c8\u55bd    //哈喽    

  

着实让人头疼一把好在在热心网友的帮助下有效解决了:

第一种:适用(&#)

下面是一个转化函数:

1

2

3

4

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

//将uicode 转化成 utf-8

public function unescape($str) {

    $str = rawurldecode($str);

    preg_match_all("/(?:%u.{4})|&#x.{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-2BE","UTF-8",pack("H4",substr($v,-4)));

        }

        elseif(substr($v,0,3) == "&#x"){

            $ar[$k] = iconv("UCS-2BE","UTF-8",pack("H4",substr($v,3,-1)));

        }

        elseif(substr($v,0,2) == "&#") {

 

            $ar[$k] = iconv("UCS-2BE","UTF-8",pack("n",substr($v,2,-1)));

        }

    }

    return join("",$ar);

}

 

第二种:适用(#,\ U)

在后来的项目开发中无意中发现一个小技巧同样可以实现这一功能:

通过json_decode()这个函数,可以转化成UTF-8只不过前提必须把字符串拼接成JSON格式的字符串:

 

1

json_decode('["本期费用合计&#65306"]',true);

返回的是一个:下标未0数组。

注意:拼接JSON字符串的时候必须使用双引号;中括号是[值];花括号是{键:值};

 

第三种:适用(#,\ U)

1

preg_replace("#\\\u([0-9a-f]{4})#ie""iconv('UCS-2BE', 'UTF-8', pack('H4', '\\1'))"'本期费用合计&#65306');

  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值