aksafan / yii2-emoji-detection
为aaronpk的Emoji Detection提供的Yii2包装器
2.1.1
2024-06-03 22:24 UTC
Requires
- php: ^8.0
- ext-json: *
- ext-mbstring: *
- p3k/emoji-detector: ^1
- yiisoft/yii2: >=2.0.50
Requires (Dev)
- phpunit/phpunit: ^9.0
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语法的改进。
安装
安装此扩展的首选方式是通过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许可证。