• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

如何使用php实现unicode与普通字符串的相互转化(代码示例)

php 搞代码 4年前 (2022-01-21) 16次浏览 已收录 0个评论
/**   * unicode转字符串,通过json转化   * @param $str   * @return string   */  function unicode_decode_by_json($str)  {    $json = '{"str":"' . $str . '"}';    $arr = json_decode($json, true);    if (empty($arr)) return '';    return $arr['str'];  }

方法二:

/**   * unicode转中文   * @param $data   * @return null|string|string[]   */  function unicode_decode($data)  {    $rs = preg_replace_callback('/\\\\u([0-9a-f]{4})/i', 'replace_unicode_escape_sequence', $data);    return $rs;  }  function replace_unicode_escape_sequence($match)  {    return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE');  }
/**   * @param  string $str 需转换字符,这里为单个字符   * @return string   */  function get_unicode($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    return '\\u' . $_sup . $unicode; //加上 \u  返回  }  /**   * 转化字符串为unicode   * @param $str string 可单个/复数个   * @return string   */  function unicode_encode($str)  {    $_arr_str = preg_split('/(?<!^)(?!$)/u', $str);//拆分字符串为数组(含中文字符)    $_ret_unicode = '';    foreach ($_arr_str as $_str) $_ret_unicode .= get_unicode($_str);    return $_ret_unicode;  }

测试效果:

$_str_test = 'see,你看我哪里像好人';  $_unicode = unicode_encode($_str_t<a>2本文来源gao*daima.com搞@代#码&网6</a><pre>搞gaodaima代码

est); echo $_str_test . ' <b style="color: red">=></b> ' . $_unicode, '<br><br>'; echo $_unicode . ' <b style="color: red">=></b> ' . unicode_decode($_unicode), '<br><br>'; echo $_unicode . ' <b style="color: red">=></b> ' . unicode_decode_by_json($_unicode), '<br><br>';

以上就是如何使用php实现unicode与普通字符串的相互转化(代码示例)的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:如何使用php实现unicode与普通字符串的相互转化(代码示例)
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址