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中实现记住密码自动登录的代码
Mar 02 PHP
php实现的Captcha验证码类实例
Sep 22 PHP
PHP中遇到的时区问题解决方法
Jul 23 PHP
讲解WordPress中用于获取评论模板和搜索表单的PHP函数
Dec 28 PHP
PHP is_array() 检测变量是否是数组的实现方法
Jun 13 PHP
php获取当前月与上个月月初及月末时间戳的方法
Dec 05 PHP
php微信公众平台开发(一) 配置接口
Dec 06 PHP
php微信公众号开发之现金红包
Apr 16 PHP
使用Zookeeper分布式部署PHP应用程序
Mar 15 PHP
PHP匿名函数(闭包函数)详解
Mar 22 PHP
Yii框架操作cookie与session的方法实例详解
Sep 04 PHP
基于PHP的微信公众号的开发流程详解
Aug 07 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 高手之路(一)
2006/10/09 PHP
在IIS7.0下面配置PHP 5.3.2运行环境的方法
2010/04/13 PHP
php中并发读写文件冲突的解决方案
2013/10/25 PHP
php画图实例
2014/11/05 PHP
Thinkphp微信公众号支付接口
2016/08/04 PHP
PHP静态成员变量
2017/02/14 PHP
JavaScript中的new的使用方法与注意事项
2007/05/16 Javascript
jQuery 学习 几种常用方法
2009/06/11 Javascript
jQuery总体架构的理解分析
2011/03/07 Javascript
javascript实现当前页导航激活的方法
2015/02/27 Javascript
两款JS脚本判断手机浏览器类型跳转WAP手机网站
2015/10/16 Javascript
详解js运算符单竖杠“|”与“||”的用法和作用介绍
2016/11/04 Javascript
javascript设计模式之中介者模式学习笔记
2017/02/15 Javascript
AngularJS 验证码60秒倒计时功能的实现
2017/06/05 Javascript
Angular使用动态加载组件方法实现Dialog的示例
2018/05/11 Javascript
JS实现简单的星期格式转换功能示例
2018/07/23 Javascript
深入分析element ScrollBar滚动组件源码
2019/01/22 Javascript
浅谈Ant Design Pro 菜单自定义 icon
2020/11/17 Javascript
python k-近邻算法实例分享
2014/06/11 Python
如何使用七牛Python SDK写一个同步脚本及使用教程
2015/08/23 Python
Python实现调度算法代码详解
2017/12/01 Python
python实现三维拟合的方法
2018/12/29 Python
将Python文件打包成.EXE可执行文件的方法
2019/08/11 Python
Django项目创建到启动详解(最全最详细)
2019/09/07 Python
Python3.7安装keras和TensorFlow的教程图解
2020/06/18 Python
python打开文件的方式有哪些
2020/06/29 Python
5款实用的python 工具推荐
2020/10/13 Python
基于CSS3实现的几个小loading效果
2018/09/27 HTML / CSS
幼儿园实习生辞职信
2014/01/20 职场文书
如何写好自荐信
2014/04/07 职场文书
党员创先争优活动总结
2014/05/04 职场文书
要账委托书范本
2014/09/15 职场文书
考研导师推荐信范文
2015/03/27 职场文书
2015年度培训工作总结范文
2015/04/02 职场文书
解决jupyter notebook图片显示模糊和保存清晰图片的操作
2021/04/24 Python
python基础之//、/与%的区别详解
2022/06/10 Python