php unicode编码和字符串互转的方法

 更新时间:2020年08月12日 11:45:16   作者:王召波  
下面小编就为大家带来一篇php unicode编码和字符串互转的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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中接口的应用

    这篇文章主要介绍了PHP中接口的应用,是PHP入门学习中的基础知识,需要的朋友可以参考下
    2015-08-08
  • php 编写安全的代码时容易犯的错误小结

    php 编写安全的代码时容易犯的错误小结

    PHP是个伟大的web开发语言,灵活的语言,但是看到php程序员周而复始的犯的一些错误。我做了下面这个列表,列出了PHP程序员经常犯的10中错误,大多数和安全相关。看看你犯了几种
    2010-05-05
  • php发送http请求的常用方法分析

    php发送http请求的常用方法分析

    这篇文章主要介绍了php发送http请求的常用方法,结合实例形式较为详细的分析了php使用curl及socket发送post请求的操作技巧,需要的朋友可以参考下
    2016-11-11
  • PHP判断上传文件类型的解决办法

    PHP判断上传文件类型的解决办法

    php通过判断上传文件的头字符来判断文件的类型,这可以称得上是最安全,最真实确定上传文件类型的方法了,具体实现方法如下
    2015-10-10
  • 解析php中如何调用用户自定义函数

    解析php中如何调用用户自定义函数

    以下是对php中调用用户自定义函数的方法进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-08-08
  • php实现通用的信用卡验证类

    php实现通用的信用卡验证类

    这篇文章主要介绍了php实现通用的信用卡验证类,涉及信用卡的规则与php字符串操作的相关技巧,具有一定参考借鉴价值,文中有英文原文注释说明,有助于更直观的了解源码相关信息,需要的朋友可以参考下
    2015-03-03
  • php获取服务器信息的实现代码

    php获取服务器信息的实现代码

    php获取服务器信息的一段代码,包括获取mysql数据库版本信息、GD库信息、php上传相关信息等。有需要的朋友,可以参考下
    2013-02-02
  • php计算给定时间之前的函数用法实例

    php计算给定时间之前的函数用法实例

    这篇文章主要介绍了php计算给定时间之前的函数用法,实例分析了php计算时间的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • php switch语句多个值匹配同一代码块应用示例

    php switch语句多个值匹配同一代码块应用示例

    switch 语句一行接一行地执行(实际上是语句接语句)。开始时没有代码被执行,下面有个示例,需要的朋友可以参考下
    2014-07-07
  • CodeIgniter 完美解决URL含有中文字符串

    CodeIgniter 完美解决URL含有中文字符串

    下面小编就为大家带来一篇CodeIgniter 完美解决URL含有中文字符串。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05

最新评论