将unicode编码后的字符串转换成可读形式

很多情况下,我们都会遇到经过unicode转换后的字符串,例如下面这条链接地址:

https:\u002f\u002fHK1-word-view.officeapps.live.com\u002fwv\u002fwordviewerframe.aspx?ui=zh\u00252DCN\u0026rs=zh\u00252DCN\u0026WOPISrc=http\u00253A\u00252F\u00252Fhk1\u00252Dview\u00252Dwopi\u00252Ewopi\u00252Elive\u00252Enet\u00253A808\u00252Foh\u00252Fwopi\u00252Ffiles\u00252F\u002540\u00252FwFileId\u00253FwFileId\u00253D\u0026access_token_ttl=0

转换后的字符串中的\u编码的字符可读性差,在内容传输及js中使用是没有问题的,但如果直接复制到浏览器访问或者在php里面做一些处理,是件比较麻烦的事情,浏览器无法解释这样的链接,所有需要将编码后的字符串转换成可读形式,下面简单介绍两种方式:

第一种是通过函数回调方式处理:

function decodeUnicode($str){
    return preg_replace_callback('/\\\\u([0-9a-f]{4})/i', function($matches){
        return mb_convert_encoding(pack("H*", $matches[1]), "UTF-8", "UCS-2BE");
    }, $str);
}

第二种是通过将字符串拼接成json格式,再使用json_decode的形式解码:

$url = 'xxxx';
$str = '["'.$url.'"]';
$str_decode = json_decode($str, true);
$decode_url = $str_decode[0];


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值