我是Codeigniter 4的新手,我正在制作一个与表情符号相关的教程。我遇到了这个问题,我花了一个星期的时间上网,希望能找到解决方案。不幸的是,没有什么能解决这个问题。希望你能帮助我。
问题描述:
我跟随Github emojionearea的链接,帮助我创建了一个表情符号选择器。
它运行完美,直到我提交了一个表情符号到数据库,并从数据库检索它显示在一个网页。
我选择了一个表情符号,例如Man Technologist表情符号,它在输入栏中显示为一个表情符号(见截图"提交前")
之前提交
当我将它提交到数据库并检索到页面中显示后,我意识到有两个表情符号已被保存(见"提交后"截图)。在提交
这就是我希望得到帮助的问题。
以下是我的数据库设置:
我将DB、DB表和列设置为字符集utf8mb4
,排序规则设置为utf8mb4_unicode_ci
。我在phpmyadmin SQL中运行SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
,以查看我的数据库的当前状态。如下所示:数据库字符集
在Config文件夹下的Database.php文件中,我设置如下:输入图片描述
在我的php视图中,我在标题中包含了代码<meta http-equiv="Content-type" content="text/html" charset="utf-8">
。
完成我的问题描述。
请帮我解决这个问题。谢谢你!
我试图为数据库更改许多字符集。在提交给数据库之前,我希望数据库得到与页面显示的表情符号完全相同的表情符号。
在Emojionearea github页面上说"The end result is a secure text/plain in which the image icons will be replaced with their Unicode analogues."
所以保存到数据库的是你选择的Emojione图像的unicode版本。
要将unicode转换回Emojione图像,请安装Emojione库的PHP工具包:https://github.com/joypixels/emoji-toolkit/blob/master/INSTALLATION.md
composer require joypixels/emoji-toolkit
然后使用这个工具包将unicode转换回图像:https://github.com/joypixels/emoji-toolkit/blob/master/examples/PHP.md
use JoyPixelsClient;
use JoyPixelsRuleset;
$client = new Client(new Ruleset());
echo $client->toImage($inputText);
Emojionearea似乎默认使用Emojione的旧版本(3.1.2),因此您可能希望创建Client
类的扩展以将工具包设置为相同的版本,因为不同版本的图像略有不同:
<?php
namespace AppLibraries;
use JoyPixelsClient;
class Emoji extends Client
{
public $emojiVersion = '3.1'; // 3.1.2 does not seem to work
}
然后使用这个类将unicode字符串转换为图像:
use AppLibrariesEmoji;
use JoyPixelsRuleset;
$client = new Emoji(new Ruleset());
echo $client->toImage($inputText);