将\ u emoji表情字符串转换为utf-8以获取电子邮件正文

时间:2019-04-12 09:08:22

标签: php emoji

我在PHP字符串变量中包含以下表情符号

$emoji = "\u{1F9D1}\u{1F4AC}";
echo $emoji;

上面的代码将打印以下表情符号。


我想将这些表情符号嵌入到电子邮件正文中。为此,我想将它们转换为&#x1F9D1&#x1F4AC ,以便可以将它们放在“电子邮件”正文中,并可以正确显示。

如何在PHP中做到这一点?

1 个答案:

答案 0 :(得分:0)

$foo = preg_replace('#\\\u\{(.*?)\}#', '&#x$1;', $emoji);
  • \ u必须转义,因为它在正则表达式中具有特殊含义,并且由于反斜杠在PHP文本文字中也具有特殊含义,因此我们在这里需要三个。

  • {和}也具有特殊含义,因此需要使用单个反斜杠将其转义。

  • (。*?)匹配所有内容(期望换行符),?使其变得不太贪婪。

  • 我添加了一个;最后,替换-缺少浏览器时,浏览器可以容错,但是从技术上来说,HTML语法是必需的。


以及“其他方向”,根据要求:

$emojihtml = '🧑💬';

$bar = preg_replace('~&#x(.*?);~', '\u{$1}', $emojihtml);

(我在这里使用~作为正则表达式定界符,因为#是我们要匹配的内容的一部分,可以避免转义。)