将 \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);
(我在这里使用 ~
作为正则表达式分隔符,因为 #
是我们要匹配的部分,节省了转义。)
我在 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);
(我在这里使用 ~
作为正则表达式分隔符,因为 #
是我们要匹配的部分,节省了转义。)