在网页中显示\ u1F603(表情符号图标)

时间:2016-01-29 08:44:12

标签: php html

我在我的数据库中的消息中存储了像“\ u1F603”这样的代码,现在我需要在我的网页上显示相应的表情符号。

如何使用PHP将\ u1F603转换为\ xF0 \ x9F \ x98 \ x83以在网页中显示表情符号图标?

2 个答案:

答案 0 :(得分:3)

您不需要将表情符号字符代码转换为UTF-8序列,您只需使用原始的21位Unicode值作为HTML中的数字字符引用,如下所示:😃呈现为:?。

维基百科文章"Unicode and HTML"解释说:

  

为了解决遗留编码的限制,HTML的设计使得可以使用numeric character reference来表示HTML文档中整个Unicode的字符:一系列明确拼写的字符out表示正在表示的字符的Unicode代码点。字符引用的格式为&# N ;,其中 N 是Unicode代码点的十进制数或十六进制数,在这种情况下,它必须以x为前缀。组成数字字符引用的字符在批准在Internet上使用的每个编码中都是通用的。

     

例如,像U + 5408这样对应于特定中文字符的Unicode代码点必须转换为十进制数字,前面加&#后跟;,就像这样:合,产生这个:合。

因此,如果在PHP代码中有一个包含'\u1F603'的字符串,那么您可以使用preg_replace创建相应的HTML字符串,如下例所示:

$text = "This is fun \\u1F603!"; // this has just one backslash, it had to be escaped 
echo "Database has: $text<br>";
$html = preg_replace("/\\\\u([0-9A-F]{2,5})/i", "&#x$1;", $text);
echo "Browser shows: $html<br>";

输出:

  

数据库有:这很有趣\ u1F603!
  浏览器显示:这很有趣?!

请注意,如果在您的数据中,您也会使用文字\u表示法来表示较低范围的Unicode字符,即使用2到4位的十六进制数字,您必须确保下一个用户的字符也不是十六进制数字,因为它会导致\u转义序列停止的位置的错误解释。在这种情况下,我建议总是在数据中用零填充这些十六进制数字,这样它们总是长5位数。

要确保您的浏览器使用正确的字符编码,请执行以下操作:

  1. 在HTML head部分中指定UTF-8字符编码:
    <meta charset="utf-8">
  2. 以UTF-8编码保存您的PHP文件。根据您的编辑器,您可能需要使用“另存为”选项,或在编辑器的“首选项”“选项”中找到此类设置< / em> menu。

答案 1 :(得分:0)

地狱大家, 经过多次尝试,我可以找到解决方案。

我用户下面的代码: https://github.com/BriquzStudio/php-emoji

data:"em"

这个对我来说很好!! :)Below is my reslut