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 相关文章推荐
对squid中refresh_pattern的一些理解和建议
Apr 17 PHP
解析wamp5下虚拟机配置文档
Jun 27 PHP
mcrypt启用 加密以及解密过程详细解析
Aug 07 PHP
thinkphp的c方法使用示例
Feb 24 PHP
php 使用GD库为页面增加水印示例代码
Mar 24 PHP
linux使用crontab实现PHP执行计划定时任务
May 10 PHP
PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
Mar 19 PHP
php实现简易聊天室应用代码
Sep 23 PHP
php 7新特性之类型申明详解
Jun 06 PHP
Laravel接收前端ajax传来的数据的实例代码
Jul 20 PHP
php用户名的密码加密更安全的方法
Jun 21 PHP
PHP RabbitMQ消息列队
May 11 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
人脸识别测颜值、测脸龄、测相似度微信接口
2016/04/07 PHP
PHP文件及文件夹操作之创建、删除、移动、复制
2016/07/13 PHP
JavaScript中的私有成员
2006/09/18 Javascript
这些年、我收集的JQuery代码小结
2012/08/01 Javascript
Jquery submit()无法提交问题
2013/04/21 Javascript
引用 js在IE与FF之间的区别详细解析
2013/11/20 Javascript
jquery、js调用iframe父窗口与子窗口元素的方法整理
2014/07/31 Javascript
JavaScript实现找质数代码分享
2015/03/24 Javascript
jQuery scrollFix滚动定位插件
2015/04/01 Javascript
javascript中数组方法汇总
2015/07/07 Javascript
jquery事件的ready()方法使用详解
2015/11/11 Javascript
深入理解jquery自定义动画animate()
2016/05/24 Javascript
浅谈DOM的操作以及性能优化问题-重绘重排
2017/01/08 Javascript
easyui关于validatebox实现多重规则验证的方法(必看)
2017/04/12 Javascript
jQuery读取本地的json文件(实例讲解)
2017/10/31 jQuery
Vue文件配置全局变量的实例
2018/09/06 Javascript
javascript实现5秒倒计时并跳转功能
2019/06/20 Javascript
python代码检查工具pylint 让你的python更规范
2012/09/05 Python
Python+MongoDB自增键值的简单实现
2016/11/04 Python
python strip() 函数和 split() 函数的详解及实例
2017/02/03 Python
详解Python中where()函数的用法
2018/03/27 Python
使用Pandas对数据进行筛选和排序的实现
2019/07/29 Python
解决Django连接db遇到的问题
2019/08/29 Python
python异常处理、自定义异常、断言原理与用法分析
2020/03/23 Python
Python用5行代码实现批量抠图的示例代码
2020/04/14 Python
html5 桌面提醒:Notifycations应用介绍
2012/11/27 HTML / CSS
澳大利亚著名的纺织品品牌:Canningvale
2020/05/05 全球购物
PHP面试题-$message和$$message的区别
2015/12/08 面试题
大学生表扬信范文
2014/01/09 职场文书
企业安全生产责任书范本
2014/07/28 职场文书
办公楼租房协议书范本
2014/11/25 职场文书
杨善洲电影观后感
2015/06/04 职场文书
sql中mod()函数取余数的用法
2021/05/29 SQL Server
教你修复 Win11应用商店加载空白问题
2021/12/06 数码科技
Windows Server 修改远程桌面端口的实现
2022/06/25 Servers
redis lua限流算法实现示例
2022/07/15 Redis