PHP学习之unicode与普通字符串的如何相互转化
发布:smiling 来源: PHP粉丝网 添加日期:2020-03-28 17:55:56 浏览: 评论:0
本篇文章主要讲述了unicode与普通字符串的相互转化,具有一定参考价值,感兴趣的朋友了解一下。
unicode转字符串
方法一:json
- /**
- * unicode转字符串,通过json转化
- * @param $str
- * @return string
- */
- function unicode_decode_by_json($str)
- {
- $json = '{"str":"' . $str . '"}';
- $arr = json_decode($json, true);
- if (emptyempty($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('/(?<!^)(?!$)/u', $str);//拆分字符串为数组(含中文字符)
- $_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 . ' <b style="color: red">=></b> ' . $_unicode, '<br><br>';
- echo $_unicode . ' <b style="color: red">=></b> ' . unicode_decode($_unicode), '<br><br>';
- echo $_unicode . ' <b style="color: red">=></b> ' . unicode_decode_by_json($_unicode), '<br><br>';
Tags: unicode PHP字符串转化
相关文章
- ·汉字转换成Unicode编码PHP程序(2014-07-29)
- ·php5.4中JSON_UNESCAPED_UNICODE让Json更懂中文(2014-09-12)
- ·php怎么把unicode编码转为utf-8编码(2015-04-08)
- ·php的json_encode不支持JSON_UNESCAPED_UNICODE解决办法(2015-12-10)
- ·php中把unicode编码转化为中文(2015-12-24)
- ·PHP Unicode编码相互转换的例子(2016-01-28)
- ·Json_encode防止汉字转义成unicode的方法(2019-12-04)
- ·PHP解码unicode编码的中文字符代码分享(2021-03-30)
- ·PHP解密Unicode及Escape加密字符串(2021-05-27)
- ·简单谈谈php中的unicode和utf8编码(2021-05-28)
- ·Json_encode防止汉字转义成unicode的方法(2021-07-11)
- ·php将字符串转化成date存入数据库的两种方式(2020-11-21)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)