al/emoji-detector

检测并返回字符串中找到的所有表情符号

0.2.3 2020-06-26 09:10 UTC

This package is not auto-updated.

Last update: 2024-09-29 05:29:13 UTC


README

此库将在输入字符串中查找所有表情符号并返回每个表情字符的信息。它支持具有肤色修饰符的表情符号,以及由多人组成的组合表情符号。

Build Status

安装

composer require al/emoji-detector

请注意:这是我为自己创建的分支,用于使用更新的表情符号列表来使用此库。我将尝试维护此分支并更新列表。然而,如果您需要额外的稳定性,请使用原始包:p3k/emoji-detector。谢谢 ^ ^

用法

检测表情符号

$input = "Hello 👍🏼 World 👨‍👩‍👦‍👦";
$emoji = Emoji\detect_emoji($input);

print_r($emoji);

该函数返回一个数组,包含字符串中找到的每个表情符号的详细信息。

Array
(
  [0] => Array
    (
      [emoji] => 👨‍👩‍👦‍👦
      [short_name] => man-woman-boy-boy
      [num_points] => 7
      [points_hex] => Array
        (
          [0] => 1F468
          [1] => 200D
          [2] => 1F469
          [3] => 200D
          [4] => 1F466
          [5] => 200D
          [6] => 1F466
        )
      [hex_str] => 1F468-200D-1F469-200D-1F466-200D-1F466
      [skin_tone] =>
    )
  [1] => Array
    (
      [emoji] => 👍🏼
      [short_name] => +1
      [num_points] => 2
      [points_hex] => Array
        (
          [0] => 1F44D
          [1] => 1F3FC
        )

      [hex_str] => 1F44D-1F3FC
      [skin_tone] => skin-tone-3
    )
)
  • emoji - 找到的表情符号序列,作为原始字节序列。您可以将此输出以显示原始表情符号。
  • short_name - 表情符号的简短名称,如 Slack 的表情符号数据定义。
  • num_points - 此表情符号由多少个 Unicode 代码点组成。
  • points_hex - 组成此表情符号的每个 Unicode 代码点的数组。这些以十六进制字符串形式返回。这还将包括“不可见”字符,如 ZWJ 字符和肤色修饰符。
  • hex_str - 所有 Unicode 代码点以十六进制形式分离的列表。此字符串存在于 Slack 表情符号数据 数组中。
  • skin_tone - 如果在表情符号中使用了肤色修饰符,此字段表示哪种肤色,因为 short_name 将不包含肤色。

测试字符串是否为单个表情符号

由于简单地计算字符串中的 Unicode 字符数并不能告诉你字符串中有多少可见的表情符号,因此确定单个字符是否为表情符号更为复杂。此函数仅在字符串包含单个表情符号字符时返回表情符号数据,否则返回 false。

$emoji = Emoji\is_single_emoji('👨‍👩‍👦‍👦');
print_r($emoji);
Array
(
    [emoji] => 👨‍👩‍👦‍👦
    [short_name] => man-woman-boy-boy
    [num_points] => 7
    [points_hex] => Array
        (
            [0] => 1F468
            [1] => 200D
            [2] => 1F469
            [3] => 200D
            [4] => 1F466
            [5] => 200D
            [6] => 1F466
        )

    [hex_str] => 1F468-200D-1F469-200D-1F466-200D-1F466
    [skin_tone] =>
)
$emoji = Emoji\is_single_emoji('😻🐈');
// false

许可证

版权所有 2017 年 Aaron Parecki。

在 MIT 许可证下可用。

表情符号数据来源于 iamcal/emoji-data,MIT 许可证。

表情符号解析正则表达式来源于 EmojiOne,MIT 许可证。