【问题标题】:How to convert emoji symbol code ':)' to smiley emoji in PHP [duplicate]如何在PHP中将表情符号代码':)'转换为笑脸表情符号[重复]
【发布时间】:2018-08-22 16:07:10
【问题描述】:

我想将表情符号代码(即“:)”转换为????。

如何转换?

目前我正在使用 p3k 检测器来检测表情符号。下面是我可以检测表情符号的代码。

  $emoji = \Emoji\detect_emoji($text);

【问题讨论】:

  • :) 不是表情符号
  • 你以前问过不少问题;他们中的任何一个解决了吗?很高兴知道哪些问题已解决并将它们标记出来。

标签: php


【解决方案1】:

你需要创建你自己的函数来转换(或者如果有任何库已经这样做了,或者在线搜索)。

function stringToEmoji($str) {
    $emojis = [
        'o/'         => '?',
        '</3'        => '?',
        '<3'         => '?',
        '8-D'        => '?',
        '8D'         => '?',
        ':-D'        => '?',
        '=-3'        => '?',
        '=-D'        => '?',
        '=3'         => '?',
        '=D'         => '?',
        'B^D'        => '?',
        'X-D'        => '?',
        'XD'         => '?',
        'x-D'        => '?',
        'xD'         => '?',
        ':\')'       => '?',
        ':\'-)'      => '?',
        ':-))'       => '?',
        '8)'         => '?',
        ':)'         => '?',
        ':-)'        => '?',
        ':3'         => '?',
        ':D'         => '?',
        ':]'         => '?',
        ':^)'        => '?',
        ':c)'        => '?',
        ':o)'        => '?',
        ':}'         => '?',
        ':っ)'        => '?',
        '=)'         => '?',
        '=]'         => '?',
        '0:)'        => '?',
        '0:-)'       => '?',
        '0:-3'       => '?',
        '0:3'        => '?',
        '0;^)'       => '?',
        'O:-)'       => '?',
        '3:)'        => '?',
        '3:-)'       => '?',
        '}:)'        => '?',
        '}:-)'       => '?',
        '*)'         => '?',
        '*-)'        => '?',
        ':-,'        => '?',
        ';)'         => '?',
        ';-)'        => '?',
        ';-]'        => '?',
        ';D'         => '?',
        ';]'         => '?',
        ';^)'        => '?',
        ':-|'        => '?',
        ':|'         => '?',
        ':('         => '?',
        ':-('        => '?',
        ':-<'        => '?',
        ':-['        => '?',
        ':-c'        => '?',
        ':<'         => '?',
        ':['         => '?',
        ':c'         => '?',
        ':{'         => '?',
        ':っC'        => '?',
        '%)'         => '?',
        '%-)'        => '?',
        ':-P'        => '?',
        ':-b'        => '?',
        ':-p'        => '?',
        ':-Þ'        => '?',
        ':-þ'        => '?',
        ':P'         => '?',
        ':b'         => '?',
        ':p'         => '?',
        ':Þ'         => '?',
        ':þ'         => '?',
        ';('         => '?',
        '=p'         => '?',
        'X-P'        => '?',
        'XP'         => '?',
        'd:'         => '?',
        'x-p'        => '?',
        'xp'         => '?',
        ':-||'       => '?',
        ':@'         => '?',
        ':-.'        => '?',
        ':-/'        => '?',
        ':/'         => '?',
        ':L'         => '?',
        ':S'         => '?',
        ':\\'        => '?',
        '=/'         => '?',
        '=L'         => '?',
        '=\\'        => '?',
        ':\'('       => '?',
        ':\'-('      => '?',
        '^5'         => '?',
        '^<_<'       => '?',
        'o/\\o'      => '?',
        '|-O'        => '?',
        '|;-)'       => '?',
        ':###..'     => '?',
        ':-###..'    => '?',
        'D-\':'      => '?',
        'D8'         => '?',
        'D:'         => '?',
        'D:<'        => '?',
        'D;'         => '?',
        'D='         => '?',
        'DX'         => '?',
        'v.v'        => '?',
        '8-0'        => '?',
        ':-O'        => '?',
        ':-o'        => '?',
        ':O'         => '?',
        ':o'         => '?',
        'O-O'        => '?',
        'O_O'        => '?',
        'O_o'        => '?',
        'o-o'        => '?',
        'o_O'        => '?',
        'o_o'        => '?',
        ':$'         => '?',
        '#-)'        => '?',
        ':#'         => '?',
        ':&'         => '?',
        ':-#'        => '?',
        ':-&'        => '?',
        ':-X'        => '?',
        ':X'         => '?',
        ':-J'        => '?',
        ':*'         => '?',
        ':^*'        => '?',
        'ಠ_ಠ'        => '?',
        '*\\0/*'     => '?',
        '\\o/'       => '?',
        ':>'         => '?',
        '>.<'        => '?',
        '>:('        => '?',
        '>:)'        => '?',
        '>:-)'       => '?',
        '>:/'        => '?',
        '>:O'        => '?',
        '>:P'        => '?',
        '>:['        => '?',
        '>:\\'       => '?',
        '>;)'        => '?',
        '>_>^'       => '?',
        ];

    if(isset($emojis[$str])) {
        return $emojis[$str];
    }

    return null;
}

echo stringToEmoji(':)');

输出:

?

从这个答案中得到列表:https://stackoverflow.com/a/29581503/1580044

【讨论】:

  • 我通常不赞成来自另一个问答的答案,但考虑到 OP 的接受记录和您的发现,值得(来自我)赞成。
【解决方案2】:

我无法在此处插入整个函数,因为它绕过了堆栈溢出字符限制。这是它的链接:

https://gist.github.com/BarryMode/432a7a1f9621e824c8a3a23084a50f60#file-htmlemoji-php

简单来说就是函数

preg_replace_callback(pattern, callback, string);

string 是您想要将表情符号更改为 html 实体的输入。 pattern 使用正则表达式在字符串中查找 emoji,然后将每个 emoji 输入到 callback 中,这是从 emoji 到 html 实体的转换。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-13
    • 2015-06-11
    • 2019-07-11
    • 1970-01-01
    • 2020-10-22
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多