48design/phmiley

Phmiley 将 UTF8 字符串中的 Unicode 表情符号替换为图形。

1.0.0 2020-07-06 07:40 UTC

This package is auto-updated.

Last update: 2024-09-06 17:18:59 UTC


README

Phmiley 是一个 PHP 库,可以将 UTF8 字符串中的 Unicode 表情符号替换为图形。

随着跨设备 Emoji 支持的不断发展,为什么还需要这个功能?

创建这个库的灵感来自于服务器端 PDF 创建的场景,它不支持 Emoji,并且将它们显示为难看的矩形。此外,Windows 默认不支持 Emoji 标志,因此如果您想在项目中使用基于 Unicode 的标志,则需要绕过这一点。

安装

作为 Composer 包使用

composer require 48design/phmiley

或者从 src 文件夹手动要求文件

use FortyeightDesign\Phmiley\Phmiley;

require '/path/to/phmiley/src/Phmiley.php';
require '/path/to/phmiley/src/Exception.php';

Phmiley 至少需要 PHP 版本 7.1.0 才能运行。

使用方法

Phmiley 最简单的用法是

$Phmiley = new Phmiley();
$testString = "I would love to have some 🍕 right now! 🤤"
$Phmiley->parse($testString);

默认情况下,这将替换所有表情符号为指向 gitcdn.xyz 上 Twitter 的 Twemoji 图形(PNG 格式,72x72)的 <img> 标签,其 href 指向 Twitter 的 Twemoji 图形。一些内联样式将确保表情符号与周围文本相比具有合适的大小。

您还可以使用一些预定义的预设来切换到 SVG 或使用 OpenMoji 图形,或使用服务器上的本地图形。您甚至可以提供自己的标签生成回调。请参阅 示例代码 和选项部分以获取所有可能的选项。

在第一次运行(针对 Unicode 版本)时,Phmiley 将自动从 Unicode 的 emoji-data.txt 获取所有表情符号的字符范围,并将其作为正则表达式缓存到 /regexdata 目录中。该包为版本 13.0 提供了缓存的正则表达式文件。通过 ->setVersion() 手动切换版本尚未彻底测试,目前不应依赖于此。

选项

预设

$Phmiley = new Phmiley([
    'preset' => 'openmoji_svg'
]);
// or
$Phmiley->setPreset('openmoji_svg');

可用的预设

标签生成器

如果您想移除内联样式,将它们移动到类中,在图标周围添加包装器,使用具有背景图像的 span 或任何其他您能想到的情况,您可以提供自己的标签生成回调。您可以根据需要提供可调用的形式,它将接收一个 $data 参数,它是一个关联数组,具有以下属性:emoji - 匹配表情符号的真实 UTF-8 字符串 code - 表情符号中使用的所有 UTF-32 十六进制代码的表示,由破折号连接;这将用作默认的 twemoji 和 openmoji 集成的基于文件名的基础

请参阅 示例代码 以获取示例用法。

许可

Phmiley 的代码本身在 MIT 许可证的条款下可用。

代码范围是从 Unicode 的 emoji-data.txt 和其他数据文件中提取的,© 2019 Unicode®,Inc。请参阅他们的 使用条款许可信息

当使用内置预设请求 Twemoji 或 OpenMoji 图形时,您必须相应地引用该使用情况