【輕知識(shí)】phper:后臺(tái)文字編輯支持emoji

效果圖

添加與編輯

image.png

列表

image.png

代碼實(shí)現(xiàn)

數(shù)據(jù)庫(kù)

對(duì)應(yīng)的表做字符集修改

alter table `spread`.`yan_spread_content` CHARSET=utf8mb4;

alter table `spread`.`yan_spread_content` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

框架(我用的laravel框架)中連接字符集也做更改

 'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',

改成

'charset' => 'utf8mb4',
 'collation' => 'utf8mb4_unicode_ci',

php

php用了emojione/emojione組件用于轉(zhuǎn)換emoji字符到圖片(比如轉(zhuǎn)換成html字符,emoji字符就成了img的標(biāo)簽了),安裝composer require "emojione/emojione"

Emojione::toImage('emoji text')。

js

js用了emoji-picker。另外,如果你的項(xiàng)目是前后端分離的可能(我負(fù)責(zé)的有的項(xiàng)目不是前后端分離所以,沒(méi)研究這個(gè)庫(kù)了)用emoji-mart是不錯(cuò)的吧。

這個(gè)庫(kù),使用說(shuō)明感覺(jué)不完善。我是看了issue才使用順利的。

html

<div class="col-sm-9">
    <div class="lead emoji-picker-container">
        <textarea id="content" class="form-control textarea-control" rows="3" maxlength=500 placeholder="emoji" data-emojiable="true" name="text"   v-model="currentItem.text"   @input="call()"></textarea>

    </div>
    已有字?jǐn)?shù):<input id="have" size=5 value="0" disabled>
    剩余字?jǐn)?shù):<input id="last" size=5 value="500" disabled>
</div>

初始化:聲明 并設(shè)置高度。

window.emojiPicker = new EmojiPicker({
            emojiable_selector: '[data-emojiable=true]',
            assetsPath: '/js/Lib/emoji-picker/img/',
            popupButtonClasses: 'fa fa-smile-o'
});
window.emojiPicker.discover();
$("[data-emojiable=true]").css("height", 100)

獲取emoji字符

vue 的方式就不說(shuō)了,綁定(currentItem.text)后就直接拿。其他的通過(guò)id獲取即可。其實(shí)emoji的字符都在textarea里,顯示的圖片,都是在一個(gè)可編輯的div里面。

點(diǎn)擊列表,或者再點(diǎn)擊添加輸入框時(shí)

 $(".emoji-wysiwyg-editor").empty() // 對(duì)上一次的清空
window.emojiPicker.appendUnicodeAsImageToElement($(".emoji-wysiwyg-editor"),item.text) /把emoji字符賦值給 .emoji-wysiwyg-editor 那個(gè)可編輯的div。這樣子才能展示處理。作者沒(méi)寫(xiě),在issue看到的。
 $(".emoji-wysiwyg-editor").css("white-space", "pre-wrap") // 解決換行的問(wèn)題。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容