emoji表情 辅助函数 * ---------------------------------------------------- * * utf8编码的数据库最多只能存储三个字节, emoji表情大部分都为4个字节(utf8mb4), 所以存储时会出错, * 为了在不修改数据库类
* ----------------------------------------------------
*
* utf8编码的数据库最多只能存储三个字节, emoji表情大部分都为4个字节(utf8mb4), 所以存储时会出错,
* 为了在不修改数据库类型的情况下不出现错误, 需将4个字节的数据剔除.
*
*/
// 剔除emoji表情 (3个字节的emoji无法剔除, 比如讯飞输入法的emoji表情)
if (!function_exists('emoji_reject')) {
function emoji_reject($text)
{
$len = mb_strlen($text);
$new_text = '';
for ($i = 0; $i < $len; $i++) {
$word = mb_substr($text, $i, 1);
if (strlen($word) <= 3) {
$new_text .= $word;
}
}
return $new_text;
}
}
// 是否包含emoji表情
if (!function_exists('emoji_test')) {
function emoji_test($text)
{
$len = mb_strlen($text);
for ($i = 0; $i < $len; $i++) {
$word = mb_substr($text, $i, 1);
if (strlen($word) > 3) {
return true;
}
}
return false;
}
}
// 输出emoji表情的16进制字符串
if (!function_exists('emoji_print')) {
function emoji_print($emoji)
{
$len = mb_strlen($emoji);
$txt = '';
for ($i = 0; $i < $len; $i++) {
$hex = mb_substr($emoji, $i, 1);
$txt .= strtolower(str_replace('%', '\x', urlencode($hex))) . "\r\n";
}
echo $txt;
}
}
