php - 将 \u 表情符号字符串转换为电子邮件正文的 utf-8
问题描述
我在 PHP 字符串变量中有以下表情符号
$emoji = "\u{1F9D1}\u{1F4AC}";
echo $emoji;
上面的代码将打印以下表情符号。
我想将这些表情符号嵌入到电子邮件正文中。为此,我想将它们转换为六以便我可以将它们放在电子邮件正文中并且它们将正确显示。
我如何在 PHP 中做到这一点?
解决方案
$foo = preg_replace('#\\\u\{(.*?)\}#', '&#x$1;', $emoji);
\u 需要转义,因为它在正则表达式中具有特殊含义,并且由于反斜杠在 PHP 文本文字中也具有特殊含义,因此我们需要其中三个。
{ 和 } 也有特殊含义,因此需要用一个反斜杠进行转义。
(.*?) 匹配所有内容(除了换行符),?使它变得不贪婪。
我加了一个;在替换的最后 - 浏览器在丢失时是容错的,但在技术上它是 HTML 语法所要求的。
以及根据要求的“其他方向”:
$emojihtml = '🧑💬';
$bar = preg_replace('~&#x(.*?);~', '\u{$1}', $emojihtml);
(我~
在这里使用了正则表达式分隔符,因为#
它是我们想要匹配的一部分,节省了转义。)
推荐阅读
- sql - 声纳曲。使用 union 解析 CROSS APPLY 中的错误,但一切看起来都不错
- c - 遍历链表做某事
- python - BeautifulSoup:如何从解析的 html 中提取特定元素
- django - 在 PasswordResetView django 中自定义电子邮件设置
- python - 我应该在 kfold 验证设置中在哪里定义 sklearn 模型?
- r - 无法使用 pivot_wider 巨大的数据框传播数据
- ibm-doors - 无法使用 dxl 保存导出的 excel
- flutter - Flutter - 使用 ListView.builder 索引和提供程序包从列表中删除项目
- javascript - JavaScript html 中未定义 firebase
- python - 输入数字,输出字母表中的第n个字母