如何用twemoji替换html中的emojis?

时间:2019-05-30 13:53:16

标签: javascript html emoji twemoji

在用户生成的帖子中,我有很多原始的表情符号,例如

   <p>I ❤ your post!</p> 

我想知道用这些彩色表情符号替换这些表情符号的最佳方法是什么:

 <p>I <i class="twa twa-heart">❤️</i> your post!</p>

我想用twemoji库为表情符号设置样式。

您可能会问为什么在选择表情符号时不让用户首先插入样式的表情符号?答案是该界面的文本编辑器不是所见即所得,并且用户帖子被大量剥离。因此,排除了此类选项,我正在寻找一种在渲染时进行此转换的解决方案。

2 个答案:

答案 0 :(得分:2)

使用一个对象,其中的键是简化的表情符号,值是完整的HTML内容。遍历字符串中的每个字符,并检查它是否是简化的表情符号。如果是这样,请更换它。最后,将它们全部结合在一起并写入页面。

const raw = "<p>I ❤ your post!</p>";
const emojis = {
  "❤": `<i class="twa twa-heart">❤️</i>`
};
const res = [...raw].map(e => emojis[e] || e).join("");
document.write(res);

答案 1 :(得分:2)

查看twemoji文档...。 https://github.com/twitter/twemoji#api

API

以下是twemoji命名空间中公开的所有方法。

twemoji.parse(...)V1

这是主要的解析实用程序,每个解析类型都有3个重载。

主要有两种解析:string parsingDOM parsing

您可以解析字符串(解析其输入)。

我相信您正在寻找这样的平滑处理

但是,对于已经清理过的字符串,可以认为此方法足够安全。如果安全是您主要关注的问题之一,请参阅DOM解析。

twemoji.parse('I \u2764\uFE0F emoji!');

// will produce
/*
I <img
  class="emoji"
  draggable="false"
  alt="❤️"
  src="https://twemoji.maxcdn.com/36x36/2764.png"/> emoji!
*/