aksafan/yii2-emoji-detection

为aaronpk的Emoji Detection提供的Yii2包装器

2.1.1 2024-06-03 22:24 UTC

This package is auto-updated.

Last update: 2024-09-03 23:01:16 UTC


README

为aaronpk的Emoji Detection提供的Yii2包装器(https://github.com/aaronpk/emoji-detector-php)。该库提供了aaronpk的所有Emoji Detection工具和功能,并进行了各种增强和Yii2语法的改进。

Latest Stable Version Total Downloads Build Status

安装

安装此扩展的首选方式是通过composer。检查此扩展的composer.json以了解其要求和依赖项。阅读此composer.json以了解源库的要求。

要安装,请运行以下命令之一:

$ php composer.phar require aksafan/yii2-emoji-detection

"aksafan/yii2-emoji-detection": "*"

将以下内容添加到您的composer.json文件的require部分。

配置

要使用此扩展,您必须在应用程序配置中配置EmojiDetector类

return [
    //....
    'components' => [
        'emojiDetector' => [
             'class' => 'aksafan\emoji\source\EmojiDetector\EmojiDetector',
        ],
    ]
];

还请在项目根目录的Yii.php文件中添加此内容,以供IDE代码自动完成使用。

/**
 * Class WebApplication
 * Include only Web application related components here.
 *
 * @property \aksafan\emoji\source\EmojiDetector $emojiDetector
 */
class WebApplication extends yii\web\Application
{
}

现在您可以通过以下方式获取扩展的方法:

Yii::$app->emojiDetector

基本用法

检测表情符号

$input = "Hello 👍🏼 World 👨‍👩‍👦‍👦";
$emoji = Yii::$app->emojiDetector->detectAll($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的emoji数据定义。
  • num_points - 该表情符号由多少个Unicode代码点组成。
  • points_hex - 组成此表情符号的每个Unicode代码点的数组。这些返回为十六进制字符串。这还将包括“不可见”字符,如ZWJ字符和肤色修饰符。
  • hex_str - 所有Unicode代码点以十六进制形式列出,由连字符分隔。此字符串存在于Slack emoji数据数组中。
  • skin_tone - 如果在表情符号中使用了肤色修饰符,则此字段表示哪个肤色,因为short_name将不包含肤色。

检测表情符号并仅返回一个特定参数

$input = "Hello 👍🏼 World 👨‍👩‍👦‍👦";
$emoji = Yii::$app->emojiDetector->detectAllWIthSingleParam($input, aksafan\emoji\source\EmojiDetector::EMOJI);

print_r($emoji);

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

Array
(
  [0] => Array
    (
      👨‍👩‍👦‍👦
    )
  [1] => Array
    (
      👍🏼
    )
)
$input = "Hello 👍🏼 World 👨‍👩‍👦‍👦";
$emoji = Yii::$app->emojiDetector->detectAllWIthSingleParam($input, aksafan\emoji\source\EmojiDetector::SHORT_NAME);

print_r($emoji);
Array
(
  [0] => Array
    (
      man-woman-boy-boy
    )
  [1] => Array
    (
      +1
    )
)

可能的参数

  • aksafan\emoji\source\EmojiDetector::EMOJI - 找到的表情符号序列,作为原始的字节序列。您可以将此输出以显示原始表情符号。
  • aksafan\emoji\source\EmojiDetector::SHORT_NAME - 表情符号的短名称,由Slack的emoji数据定义。
  • aksafan\emoji\source\EmojiDetector::NUM_POINTS - 该表情符号由多少个Unicode代码点组成。
  • aksafan\emoji\source\EmojiDetector::POINTS_HEX - 组成此表情符号的每个Unicode代码点的数组。这些返回为十六进制字符串。这还将包括“不可见”字符,如ZWJ字符和肤色修饰符。
  • aksafan\emoji\source\EmojiDetector::HEX_STR - 所有Unicode代码点以十六进制形式列出,由连字符分隔。此字符串存在于Slack emoji数据数组中。
  • aksafan\emoji\source\EmojiDetector::SKIN_TONE - 如果表情符号中使用了肤色修饰符,则此字段指示哪种肤色,因为 short_name 将不会包括肤色。

将表情符号替换为给定的替换符

$input = "Hello 👍🏼 World 👨‍👩‍👦‍👦";
$emoji = Yii::$app->emojiDetector->replaceEmojis($input); //Default replacer is ''
// "Hello  World "
$input = "Hello 👍🏼 World 👨‍👩‍👦‍👦";
$emoji = Yii::$app->emojiDetector->replaceEmojis($input, '1');
// "Hello 1 World 1"
$input = "0️⃣5️⃣5️⃣0️⃣";
$emoji = Yii::$app->emojiDetector->replaceEmojis($input, '2');
// "2222"

计算文本中的表情符号数量

$input = "Hello 👍🏼 World 👨‍👩‍👦‍👦";
$emoji = Yii::$app->emojiDetector->countEmojis($input);
// 2
$input = "0️⃣5️⃣5️⃣0️⃣";
$emoji = Yii::$app->emojiDetector->countEmojis($input);
// 4

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

由于仅通过计算字符串中的Unicode字符数量并不能告诉你字符串中有多少可见的表情符号,因此确定单个字符是否为表情符号更为复杂。

$emoji = Yii::$app->emojiDetector->isSingleEmoji('👨‍👩‍👦‍👦');
// true
$emoji =Yii::$app->emojiDetector->isSingleEmoji('Emoji with text 👨‍👩‍👦‍👦');
// false
$emoji =Yii::$app->emojiDetector->isSingleEmoji('😻🐈');
// false

测试字符串是否包含一个或多个表情符号

$emoji = Yii::$app->emojiDetector->isEmoji('👨‍👩‍👦‍👦');
// true
$emoji =Yii::$app->emojiDetector->isEmoji('Emoji with text 👨‍👩‍👦‍👦');
// true
$emoji =Yii::$app->emojiDetector->isEmoji('😻🐈');
// true
$emoji =Yii::$app->emojiDetector->isEmoji('Just text');
// false

获取表情符号映射

$emoji = Yii::$app->emojiDetector->getEmojiMap();

print_r($emoji);

此方法返回一个数组,包含表情符号的十六进制Unicode和其短(友好)名称的键值对。

Array
(
  [0023-FE0F-20E3] => hash
  [002A-FE0F-20E3] => keycap_star
  [0030-FE0F-20E3] => zero
  [0031-FE0F-20E3] => one
  [0032-FE0F-20E3] => two
  [0033-FE0F-20E3] => three
  [0034-FE0F-20E3] => four
  [0035-FE0F-20E3] => five
  ...
  [2B55] => o
  [3030-FE0F] => wavy_dash
  [303D-FE0F] => part_alternation_mark
  [3297-FE0F] => congratulations
  [3299-FE0F] => secret
)

获取表情符号的正则表达式。此方法返回一个字符串,包含基于表情符号映射构建的正则表达式,用于检测表情符号。

$emoji = Yii::$app->emojiDetector->getEmojiRegexp();
// "/(?:\x{1F468}\x{200D}\x{2764}\x{FE0F}\x{200D}\x{1F48B}\x{200D}\x{1F468}|\x{1F469}\x{200D}\x{2764}\x{FE0F}\x{200D}\x{1F48B}\x{200D}\x{1F469}|\x{1F469}\x{200D}\x{2764}\x{FE0F}\x{200D}\x{1F48B}\x{200D}\x{1F468}|\x{1F3F4}\x{E0067}\x{E0062}\x{E0073}\x{E0063}\x{E0074}\x{E007F}|\x{1F3F4}\x{E0067}\x{E0062}\x{E0065}\x{E006E}\x{E0067}\x{E007F}|\x{1F3F4}\x{E0067}\x{E0062}\x{E0077}\x{E006C}\x{E0073}\x{E007F}...)"

许可证

版权所有 2018 年 Anton Khainak。

在MIT许可证下提供。

表情符号检测数据来源于 aaronpk/emoji-detector-php,根据MIT许可证。