最近有一个项目 需要对emoji进行处理。从网上找了下方法,发现有几种方式。
1.改数据库编码集格式。
2.对emoji方法进行转码然后解码。
3.改对应框架的编码格式。
在实际应项目开发,数据库字符集尽量不要瞎动,针对框架特殊方法使用会导致切换框架受限。
所以应该采用通用性最高的函数方法。下面展示简易的整合使用。使用的时候统一调用emoji方法就行。
//emoji 表情统一处理
function emoji($input)
{
$output = "";
if(strpos($input,'[[EMOJI:') !== false)
{
$output = emoji_decode($input);
}
else
{
$output = emoji_encode($input);
}
return $output;
}
//对emoji表情转义
function emoji_encode($str)
{
$strEncode = '';
$length = mb_strlen($str,'utf-8');
for ($i=0; $i < $length; $i++)
{
$_tmpStr = mb_substr($str,$i,1,'utf-8');
if (strlen($_tmpStr) >= 4)
{
$strEncode .= '[[EMOJI:'.rawurlencode($_tmpStr).']]';
}
else
{
$strEncode .= $_tmpStr;
}
}
return $strEncode;
}
//对emoji表情转反义
function emoji_decode($str)
{
$strDecode = preg_replace_callback('|\[\[EMOJI:(.*?)\]\]|', function($matches){
return rawurldecode($matches[1]);
}, $str);
return $strDecode;
}