php unicode编码和字符串互转的方法


Posted in PHP onAugust 12, 2020

php字符串转Unicode编码, Unicode编码转php字符

百度了很多,都一样, 要么不对, 要不就是只是把字符串的汉字转Unicode

经过多次试验查找, 找到了如下方法,

注意:字符串编码必须是utf-8,如果不是自行用icon转一下

//字符串转Unicode编码
function unicode_encode($strLong) {
 $strArr = preg_split('/(?<!^)(?!$)/u', $strLong);//拆分字符串为数组(含中文字符)
 $resUnicode = '';
 foreach ($strArr as $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
   }
   $str = '\\u' . $_sup . $unicode; //加上 \u 返回
   $resUnicode .= $str;
 }
 return $resUnicode;
}
//Unicode编码转字符串方法1
function unicode_decode($name)
{
 // 转换编码,将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, '\\u') === 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('UCS-2', 'UTF-8', $c);
    $name .= $c;
   }
   else
   {
    $name .= $str;
   }
  }
 }
 return $name;
}
//Unicode编码转字符串
function unicode_decode2($str){
 $json = '{"str":"' . $str . '"}';
 $arr = json_decode($json, true);
 if (empty($arr)) return '';
 return $arr['str'];
}

echo unicode_encode('若水小站:qq963087326'),'<br>';
//结果\u82e5\u6c34\u5c0f\u7ad9\u003a\u0071\u0071\u0039\u0036\u0033\u0030\u0038\u0037\u0033\u0032\u0036

echo unicode_decode('\u82e5\u6c34\u5c0f\u7ad9\u003a\u0071\u0071\u0039\u0036\u0033\u0030\u0038\u0037\u0033\u0032\u0036');
//结果若水小站:qq963087326

总结

到此这篇关于php unicode编码和字符串互转的方法的文章就介绍到这了,更多相关php unicode编码和字符串互转内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
如何分别全角和半角以避免乱码
Oct 09 PHP
php通过COM类调用组件的实现代码
Jan 11 PHP
PHP垃圾回收机制引用计数器概念分析
Jun 24 PHP
CI框架中集成CKEditor编辑器的教程
Jun 09 PHP
php中eval函数的危害与正确禁用方法
Jun 30 PHP
PHP实现简单实用的验证码类
Jul 29 PHP
PHP中抽象类和抽象方法概念与用法分析
May 24 PHP
php 流程控制switch的简单实例
Jun 07 PHP
PHP的消息通信机制测试实例
Nov 10 PHP
php中的异常和错误浅析
May 03 PHP
PHP环形链表实现方法示例
Sep 15 PHP
PHP使用Curl实现模拟登录及抓取数据功能示例
Apr 27 PHP
用PHP将Unicode 转化为UTF-8的实现方法(推荐)
Feb 08 #PHP
一键生成各种尺寸Icon的php脚本(实例)
Feb 08 #PHP
php正则提取html图片(img)src地址与任意属性的方法
Feb 08 #PHP
PHP正则匹配反斜杠'\'和美元'$'的方法
Feb 08 #PHP
php利用嵌套数组拼接与解析json的方法
Feb 07 #PHP
php获取文件名称和扩展名的方法
Feb 07 #PHP
php 常用的系统函数
Feb 07 #PHP
You might like
PHP simple_html_dom.php+正则 采集文章代码
2009/12/24 PHP
php实现12306余票查询、价格查询示例
2014/04/17 PHP
php操纵mysqli数据库的实现方法
2016/09/18 PHP
PHP-X系列教程之内置函数的使用示例
2017/10/16 PHP
js获取当前日期时间及其它日期操作汇总
2016/03/08 Javascript
详解基于javascript实现的苹果系统底部菜单
2016/12/02 Javascript
Node.js使用Express创建Web项目详细教程
2017/03/31 Javascript
bootstrap table使用入门基本用法
2017/05/24 Javascript
bootstrap是什么_动力节点Java学院整理
2017/07/14 Javascript
Vue.js项目模板搭建图文教程
2017/09/20 Javascript
AngularJS实现注册表单验证功能
2017/10/16 Javascript
Vim快速合并行及vim 将文件所有行合并到一行
2017/11/27 Javascript
Angular中点击li标签实现更改颜色的核心代码
2017/12/08 Javascript
react native 获取地理位置的方法示例
2018/08/28 Javascript
nodejs基础之buffer缓冲区用法分析
2018/12/26 NodeJs
js最实用string(字符串)类型的使用及截取与拼接详解
2019/04/26 Javascript
js神秘的电报密码 哈弗曼编码实现
2019/09/10 Javascript
JS中作用域以及变量范围分析
2020/07/18 Javascript
基于vue+echarts数据可视化大屏展示的实现
2020/12/25 Vue.js
python 测试实现方法
2008/12/24 Python
python基础教程之循环介绍
2014/08/29 Python
Python smallseg分词用法实例分析
2015/05/28 Python
利用Python开发实现简单的记事本
2016/11/15 Python
python中pygame安装过程(超级详细)
2019/08/04 Python
Python实现时间序列可视化的方法
2019/08/06 Python
详解Python中Pyyaml模块的使用
2020/10/08 Python
使用CSS3的rem属性制作响应式页面布局的要点解析
2016/05/24 HTML / CSS
HTML5 canvas标签实现刮刮卡效果
2015/04/24 HTML / CSS
Smallable英国家庭概念店:设计师童装及家居装饰
2017/07/05 全球购物
N:Philanthropy官网:美国洛杉矶基础款服装
2020/06/09 全球购物
教师产假请假条
2014/04/10 职场文书
物业管理委托协议(2篇)
2014/09/23 职场文书
三八红旗手事迹材料
2014/12/26 职场文书
2019年最新版见习人员管理制度!
2019/07/08 职场文书
2019最新版劳务派遣管理制度
2019/08/16 职场文书
mysql中数据库覆盖导入的几种方式总结
2022/03/25 MySQL