我在PHP字符串变量中包含以下表情符号
$emoji = "\u{1F9D1}\u{1F4AC}";
echo $emoji;
上面的代码将打印以下表情符号。
我想将这些表情符号嵌入到电子邮件正文中。为此,我想将它们转换为&#x1F9D1&#x1F4AC ,以便可以将它们放在“电子邮件”正文中,并可以正确显示。
如何在PHP中做到这一点?
答案 0 :(得分:0)
$foo = preg_replace('#\\\u\{(.*?)\}#', '&#x$1;', $emoji);
\ u必须转义,因为它在正则表达式中具有特殊含义,并且由于反斜杠在PHP文本文字中也具有特殊含义,因此我们在这里需要三个。
{和}也具有特殊含义,因此需要使用单个反斜杠将其转义。
(。*?)匹配所有内容(期望换行符),?使其变得不太贪婪。
我添加了一个;最后,替换-缺少浏览器时,浏览器可以容错,但是从技术上来说,HTML语法是必需的。
以及“其他方向”,根据要求:
$emojihtml = '🧑💬';
$bar = preg_replace('~&#x(.*?);~', '\u{$1}', $emojihtml);
(我在这里使用~
作为正则表达式定界符,因为#
是我们要匹配的内容的一部分,可以避免转义。)