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
PHP 字符串分割和比较
Oct 06 PHP
php实现jQuery扩展函数
Oct 30 PHP
备份mysql数据库的php代码(一个表一个文件)
May 28 PHP
php数组函数序列之array_key_exists() - 查找数组键名是否存在
Oct 29 PHP
php 调试利器debug_print_backtrace()
Jul 23 PHP
ajax php传递和接收变量实现思路及代码
Dec 19 PHP
解析如何屏蔽php中的phpinfo()函数
Jun 06 PHP
PHP 生成微信红包代码简单
Mar 25 PHP
又拍云异步上传实例教程详解
Apr 19 PHP
php处理json格式数据经典案例总结
May 19 PHP
php base64 编码与解码实例代码
Mar 21 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使用DES进行加密与解密的方法详解
2013/06/06 PHP
如何解决CI框架的Disallowed Key Characters错误提示
2013/07/05 PHP
PHP Reflection API详解
2015/05/12 PHP
PHP实现中文圆形印章特效
2015/06/19 PHP
php慢查询日志和错误日志使用详解
2021/02/27 PHP
为数据添加append,remove功能
2006/10/03 Javascript
基于jQuery的试卷自动排版系统实现代码
2011/01/06 Javascript
JS鼠标滑过图片时切换图片实现思路
2013/09/12 Javascript
JS弹出层单纯的绝对定位居中示例代码
2014/02/18 Javascript
JavaScript必知必会(三) String .的方法来自何方
2016/06/08 Javascript
微信小程序 loading(加载中提示框)实例
2016/10/28 Javascript
详解Vue生命周期的示例
2017/03/10 Javascript
Vue 父子组件的数据传递、修改和更新方法
2018/03/01 Javascript
浅谈在react中如何实现扫码枪输入
2018/07/04 Javascript
详解Webpack多环境代码打包的方法
2018/08/03 Javascript
解决LayUI加上form.render()下拉框和单选以及复选框不出来的问题
2019/09/27 Javascript
JavaScript提升机制Hoisting详解
2019/10/23 Javascript
JS数组Reduce方法功能与用法实例详解
2020/04/29 Javascript
[13:40]TI3青蛙君全程回顾 DOTA2我们为梦想再战
2013/09/13 DOTA
pymssql数据库操作MSSQL2005实例分析
2015/05/25 Python
Python自动化运维和部署项目工具Fabric使用实例
2016/09/18 Python
Python编程之Re模块下的函数介绍
2017/10/28 Python
python使用socket创建tcp服务器和客户端
2018/04/12 Python
局域网内python socket实现windows与linux间的消息传送
2019/04/19 Python
wxPython实现绘图小例子
2019/11/19 Python
Python 改变数组类型为uint8的实现
2020/04/09 Python
详解pyinstaller生成exe的闪退问题解决方案
2020/06/19 Python
记一次Django响应超慢的解决过程
2020/09/17 Python
MoviePy简介及Python视频剪辑自动化
2020/12/18 Python
小学生教师节演讲稿
2014/09/03 职场文书
教师群众路线剖析材料
2014/09/29 职场文书
2015大学生入党个人自传
2015/06/26 职场文书
导游词之河北野三坡
2019/12/11 职场文书
MySQL系列之五 视图、存储函数、存储过程、触发器
2021/07/02 MySQL
Java 超详细讲解hashCode方法
2022/04/07 Java/Android
解决ubuntu安装软件时,status-code=409报错的问题
2022/12/24 Servers