在帝國cms中如果發(fā)布的內(nèi)容中包含了emoji表情,保存的時(shí)候會(huì)出錯(cuò)秽梅。如果我們想保留emoji表情蓖柔,要怎么處理呢?今天风纠,帝國模板之家小編教大家如何實(shí)現(xiàn)這個(gè)功能况鸣。含有emoji表情的字符串在MySQL中的儲(chǔ)存,MySQL中要使用utf8mb4字符集竹观。PHP需要對(duì)字符串進(jìn)行base64編碼镐捧,從數(shù)據(jù)庫中取出時(shí)再對(duì)字符串進(jìn)行解碼。下面我們以后臺(tái)資訊表標(biāo)題支持emoji表情為例來講解臭增。具體操作如下:
1.首先要配置數(shù)據(jù)庫支持emoji表情 修改帝國cms的配置文件:/e/config/config.php懂酱,將編碼改為:utf8mb4
$ecms_config['db']['setchar']='utf8mb4'; //設(shè)置默認(rèn)編碼
$ecms_config['db']['dbchar']='utf8mb4'; //數(shù)據(jù)庫默認(rèn)編碼
2.在/e/class/userfun.php中添加接受emoji表情,解析emoji表情的函數(shù)誊抛,代碼如下:
//接受emoji表情
function addEmoji($content){
? ? ? ? $return= preg_replace_callback('/[\xf0-\xf7].{3}/', function ($r){return '@E' . base64_encode($r[0]);}, $content);
? ? ? ? return $return;
}
//解析emoji表情
function getEmoji($content){
? ? ? ? $return=preg_replace_callback('/@E(.{6}==)/',function ($r){return base64_decode($r[1]);},$content);
? ? ? ? return $return;
}
3.在/e/class/functions.php中列牺,找到返回自定義字段函數(shù)ReturnAddF 大概6179行 添加如下代碼:
if($f=='newstime')//時(shí)間
{
? ? $value=empty($value)?time():to_time($value);
}
elseif($f=='title'){
? ? ? ? $value=addEmoji($value);
}
4.在內(nèi)容模板中解析標(biāo)題中的emoji表情,代碼如下:
<?=getEmoji($navinfor['title'])?>
最終整合后效果圖如下:
標(biāo)題已經(jīng)可以正常顯示emoji表情了拗窃,內(nèi)容字段為進(jìn)行解析瞎领,顯示的是?随夸?九默?。
以上就是帝國cms模板中支持emoji表情的方法宾毒,其他位置如果也想支持emoji表情驼修,可以參考本文方法進(jìn)行整合,大家趕緊動(dòng)手試試吧诈铛,如有問題可以下方留言板留言乙各。更多相關(guān)內(nèi)容請(qǐng)關(guān)注帝國模板之家。