将 \u 表情符号字符串转换为 utf-8 用于电子邮件正文

Convert \u emoji string to utf-8 for email body

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

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

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


我想将这些表情符号嵌入到电子邮件正文中。为此,我想将它们转换为 🧑💬,这样我就可以将它们放在电子邮件正文中,并且它们会正确显示。

如何在 PHP 中执行此操作?

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

  • { 和 } 也有特殊含义,所以它们需要用一个反斜杠转义。

  • (.*?) 匹配所有内容(除了换行符), ?让它变得不贪婪。

  • 我加了一个;在替换的最后 - 浏览器在它丢失时是容错的,但它在技术上是 HTML 语法所要求的。


和“其他方向”,按要求:

$emojihtml = '🧑💬';

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

(我在这里使用 ~ 作为正则表达式分隔符,因为 # 是我们要匹配的部分,节省了转义。)