You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求PHP函数:将UTF-16 Unicode解码为Emoji表情

搞定PHP中Unicode实体转表情字符的问题

嘿,我太懂你试了一堆代码片段却没搞定的郁闷了!刚好我之前也遇到过类似的需求,给你分享一个靠谱的PHP函数,完美解决把%uD83D%uDE0B这种Unicode实体转成对应表情的问题:

function decodeUnicodeEntities($text) {
    // 匹配所有%u开头的四位十六进制Unicode实体
    return preg_replace_callback('/%u([0-9A-Fa-f]{4})/', function($matches) {
        // 先把十六进制字符串转成UTF-16BE字节,再转换为UTF-8编码
        return mb_convert_encoding(pack('H*', $matches[1]), 'UTF-8', 'UTF-16BE');
    }, $text);
}

怎么用?

很简单,直接传入你的文本就行:

$inputText = 'This is a smiley "%uD83D%uDE0B"';
$outputText = decodeUnicodeEntities($inputText);
echo $outputText; // 会输出:This is a smiley "😋"

为啥这个能成?

那种%uXXXX格式其实是UTF-16的编码表示,像表情这类复杂字符需要两个UTF-16代理对(比如%uD83D%uDE0B)组合起来。这个函数会逐个匹配这些实体,把十六进制转成对应的UTF-16字节,再转成PHP常用的UTF-8编码,自然就能正确显示表情了。

而且这个函数不会影响文本里的其他内容,比如普通的URL编码字符(%20这类)完全不受影响,放心用就行!

内容的提问来源于stack exchange,提问作者Arsh Dhillon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:22:34