【亲测有效】PHP解码unicode编码

使用该方法成功输出结果:

function replace_unicode_escape_sequence($match) {
  return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE');
}
$name = '\u65b0\u6d6a\u5fae\u535a';
$str = preg_replace_callback('/\\\\u([0-9a-f]{4})/i', 'replace_unicode_escape_sequence', $name);
echo $str; //输出: 新浪微博

参考网址:https://blog.csdn.net/gongqinglin/article/details/80062695

上面的方法亲测有效

下面是使用chatgpt输出的结果,亲测也是可以的,其实是一样的方法,只是变个顺序。

<?php

$unicode_string = '\u4f60\u597d\uff0c\u4e16\u754c\uff01';
$decoded_string = preg_replace_callback('/\\\\u([0-9a-fA-F]{4})/', function ($match) {
    return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE');
}, $unicode_string);

echo $decoded_string; // 输出:你好,世界!

?>

这个例子中,我们使用 preg_replace_callback() 函数找到所有匹配 \u 后跟四个十六进制数字的字符串。然后我们使用一个匿名函数(回调函数)来处理这些匹配项。在这个回调函数中,我们首先使用 pack() 函数将匹配到的十六进制数字转换为二进制字符串,然后用 mb_convert_encoding() 函数将其从 UCS-2BE 编码转换为 UTF-8 编码。

发布者:彬彬笔记,转载请注明出处:https://www.binbinbiji.com/php/2173.html

(0)
彬彬笔记彬彬笔记
上一篇 2020年3月19日
下一篇 2020年3月19日

相关推荐

发表回复

登录后才能评论
蜀ICP备14017386号-13