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中养成7个面向对象的好习惯
Jan 28 PHP
基于pear auth实现登录验证
Feb 26 PHP
php 随机排序广告的实现代码
May 09 PHP
浅析php过滤html字符串,防止SQL注入的方法
Jul 02 PHP
php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
Jan 17 PHP
PHP框架Laravel学习心得体会
Oct 28 PHP
php判断邮箱地址是否存在的方法
Feb 13 PHP
在Mac OS的PHP环境下安装配置MemCache的全过程解析
Feb 15 PHP
php同时使用session和cookie来保存用户登录信息的实现代码
May 13 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
Mar 11 PHP
基于PHP实现解密或加密Cloudflar邮箱保护
Jun 24 PHP
eval(cmd)与eval($cmd)的区别与联系
Jul 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 include_path设置技巧分享
2011/07/03 PHP
PHP COOKIE及时生效的方法介绍
2014/02/14 PHP
php5.3提示Function ereg() is deprecated Error问题解决方法
2014/11/12 PHP
PHP的消息通信机制测试实例
2016/11/10 PHP
网页里控制图片大小的相关代码
2006/06/25 Javascript
LazyForm jQuery plugin 定制您的CheckBox Radio和Select
2009/10/24 Javascript
javascript SpiderMonkey中的函数序列化如何进行
2012/12/05 Javascript
js截取字符串的两种方法及区别详解
2013/11/05 Javascript
jQuery获取Radio,CheckBox选择的Value值(示例代码)
2013/12/12 Javascript
LABjs、RequireJS、SeaJS的区别
2014/03/04 Javascript
表单提交前触发函数返回true表单才会提交
2014/03/11 Javascript
javascript实现简单的省市区三级联动
2015/05/14 Javascript
javascript实现加载xml文件的方法
2015/11/24 Javascript
基于JavaScript实现简单的随机抽奖小程序
2016/01/05 Javascript
jstree创建无限分级树的方法【基于ajax动态创建子节点】
2016/10/25 Javascript
JavaScript数据结构之二叉树的遍历算法示例
2017/04/13 Javascript
深入理解Node module模块
2018/03/26 Javascript
JS插件amCharts实现绘制柱形图默认显示数值功能示例
2019/11/26 Javascript
JS实现页面数据懒加载
2020/02/13 Javascript
微信小程序实现录制、试听、上传音频功能(带波形图)
2020/02/27 Javascript
JavaScript运行机制实例分析
2020/04/11 Javascript
微信h5静默和非静默授权获取用户openId的方法和步骤
2020/06/08 Javascript
深入理解NumPy简明教程---数组1
2016/12/17 Python
django session完成状态保持的方法
2018/11/27 Python
selenium使用chrome浏览器测试(附chromedriver与chrome的对应关系表)
2018/11/29 Python
通过pykafka接收Kafka消息队列的方法
2018/12/27 Python
python跳出双层for循环的解决方法
2019/06/24 Python
Python中PyQt5/PySide2的按钮控件使用实例
2019/08/17 Python
python中class的定义及使用教程
2019/09/18 Python
python_array[0][0]与array[0,0]的区别详解
2020/02/18 Python
Python Flask上下文管理机制实例解析
2020/03/16 Python
实习单位证明范例
2014/11/17 职场文书
2016元旦文艺汇演主持词
2015/07/06 职场文书
办公室管理规章制度
2015/08/04 职场文书
劳动合同变更协议书范本
2019/04/18 职场文书
CSS 文字装饰 text-decoration & text-emphasis 详解
2021/04/06 HTML / CSS