PHP学习之unicode与普通字符串的如何相互转化

PHP学习之unicode与普通字符串的如何相互转化

内容导读

收集整理的这篇技术教程文章主要介绍了PHP学习之unicode与普通字符串的如何相互转化,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2059字,纯文字阅读大概需要3分钟

内容图文

本篇文章主要讲述了unicode与普通字符串的相互转化,具有一定参考价值,感兴趣的朋友了解一下。

unicode转字符串

方法一:json

/**
 * 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');
}

字符串转unicode

/**
 * @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_test);
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视频教程

以上就是PHP学习之unicode与普通字符串的如何相互转化的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的PHP学习之unicode与普通字符串的如何相互转化全部内容,希望文章能够帮你解决PHP学习之unicode与普通字符串的如何相互转化所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。


本文关键词:

联系我们

在线咨询:点击这里给我发消息

邮件:w420220301@qq.com