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 相关文章推荐
在同一窗体中使用PHP来处理多个提交任务
Oct 09 PHP
基于mysql的论坛(5)
Oct 09 PHP
php 服务器调试 Zend Debugger 的安装教程
Sep 25 PHP
php XPath对XML文件查找及修改实现代码
Jul 27 PHP
解析php中eclipse 用空格替换 tab键
Jun 24 PHP
php合并数组中相同元素的方法
Nov 13 PHP
php实现递归与无限分类的方法
Feb 16 PHP
PHP实现简单的新闻发布系统实例
Jul 28 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
May 12 PHP
PHP排序算法之快速排序(Quick Sort)及其优化算法详解
Apr 21 PHP
PHP count()函数讲解
Feb 03 PHP
Yii框架的路由配置方法分析
Sep 09 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文件上传的例子及参数详解
2013/12/12 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
PHP实现简单的协程任务调度demo示例
2020/02/01 PHP
JS遍历数组及打印数组实例分析
2016/01/21 Javascript
JavaScript 函数的执行过程
2016/05/09 Javascript
JavaScript通过HTML的class来获取HTML元素的方法总结
2016/05/24 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单的实现代码
2016/06/23 Javascript
浅析Node.js实现HTTP文件下载
2016/08/05 Javascript
jQuery ajax 当async为false时解决同步操作失败的问题
2016/11/18 Javascript
js初始化验证实例详解
2016/11/26 Javascript
详解使用Vue.Js结合Jquery Ajax加载数据的两种方式
2017/01/10 Javascript
微信小程序开发之map地图实现教程
2017/06/08 Javascript
vue基于element-ui的三级CheckBox复选框功能的实现代码
2018/10/15 Javascript
python删除文件示例分享
2014/01/28 Python
Python字符串特性及常用字符串方法的简单笔记
2016/01/04 Python
Python编程实现二叉树及七种遍历方法详解
2017/06/02 Python
分析Python中解析构建数据知识
2018/01/20 Python
python如何去除字符串中不想要的字符
2020/07/05 Python
python实现对象列表根据某个属性排序的方法详解
2019/06/11 Python
Python实用库 PrettyTable 学习笔记
2019/08/06 Python
python多进程间通信代码实例
2019/09/30 Python
Python Numpy 自然数填充数组的实现
2019/11/28 Python
python实现tail实时查看服务器日志示例
2019/12/24 Python
TensorFlow实现从txt文件读取数据
2020/02/05 Python
Python的3种运行方式:命令行窗口、Python解释器、IDLE的实现
2020/10/10 Python
华为消费者德国官方网站:HUAWEI德国
2020/11/03 全球购物
办公室驾驶员岗位职责
2013/11/15 职场文书
优秀的自荐信要注意哪些
2014/01/03 职场文书
开工庆典邀请函范文
2014/01/16 职场文书
家长对孩子的感言
2014/03/10 职场文书
小学作文评语大全
2014/04/21 职场文书
会计学毕业生求职信
2014/06/25 职场文书
pytorch 带batch的tensor类型图像显示操作
2021/05/20 Python
解决SpringBoot跨域的三种方式
2021/06/26 Java/Android
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android
MySQL中utf8mb4排序规则示例
2021/08/02 MySQL