加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

PHP unicode与普通字符串的相互转化

发布时间:2020-05-25 02:45:13 所属栏目:PHP 来源:互联网
导读:本文章向大家介绍PHP unicode与普通字符串的相互转化,主要包括PHP unicode与普通字符串的相互转化相关应用实例、知识点总结和注意事项,具有一定的参考价值,需要的朋友可以参考一下。

unicode转字符串

方法一:json

/**

* unicode转字符串,通过json转化

* @param $str

* @return string

*/

function unicode_decode_by_json($str)

{

$json = '{"str":"' . $str . '"}';

$arr = json_decode($json,true);

if (empty($arr)) return '';

return $arr['str'];

}

方法二:

/**

* unicode转中文

* @param $data

* @return null|string|string[]

*/

function unicode_decode($data)

{

$rs = preg_replace_callback('/u([0-9a-f]{4})/i','replace_unicode_escape_sequence',$data);

return $rs;

}

function replace_unicode_escape_sequence($match)

{

return mb_convert_encoding(pack('H*',$match[1]),'UTF-8','UCS-2BE');

}

字符串转unicode

/**

* @param string $str 需转换字符,这里为单个字符

* @return string

*/

function get_unicode($str)

{

$bin_str = '';

$arr = is_array($str) ? $str : str_split($str);//获取字符内部数组表示,此时$arr应类似array(228,189,160)

foreach ($arr as $value) $bin_str .= decbin(ord($value));//转成数字再转成二进制字符串,$bin_str应类似111001001011110110100000,如果是汉字"你"

$bin_str = preg_replace('/^.{4}(.{4}).{2}(.{6}).{2}(.{6})$/','$1$2$3',$bin_str);//正则截取,$bin_str应类似0100111101100000,如果是汉字"你"

$unicode = dechex(bindec($bin_str));//返回unicode十六进制

$_sup = '';

for ($i = 0; $i < 4 - strlen($unicode); $i++) $_sup .= '0';//补位高字节 0

return 'u' . $_sup . $unicode; //加上 u 返回

}

/**

* 转化字符串为unicode

* @param $str string 可单个/复数个

* @return string

*/

function unicode_encode($str)

{

$_arr_str = preg_split('/(?

$_ret_unicode = '';

foreach ($_arr_str as $_str) $_ret_unicode .= get_unicode($_str);

return $_ret_unicode;

}

测试效果:

$_str_test = 'see,你看我哪里像好人';

$_unicode = unicode_encode($_str_test);

echo $_str_test . ' ' . $_unicode,'

';

echo $_unicode . ' ' . unicode_decode($_unicode),'

';

echo $_unicode . ' ' . unicode_decode_by_json($_unicode),'

';

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读