PHP导出带有emoji表情的文本到excel文件出问题了
前段时间做了一个导出用户信息(包含微信昵称)到excel文件的功能,一直没问题,今天突然有人反馈说导出来的数据有一些丢失了。我试了一下,发现有些数据导出没问题,有些有问题,某些列出现了空白,数据打印出来是没问题的,但是输出到excel文件中就出问题了。因为打开导出的excel文件的时候提示存在无法读取的内容,所以我猜想可能是数据中存在某些特殊字符导致的。不断缩小导出的数据范围进行重试后,终于锁定了问题,原来是用户的微信昵称中出现emoji表情导致的,将其过滤掉再导出就好了。
emoji表情过滤函数:
/** * 过滤文本中的emoji表情包(输出到excel文件中会导致问题) * @param string $text 原文本 * @return string 过滤emoji表情包后的文本 */ function removeEmoji($text){ $len = mb_strlen($text); $newText = ''; for($i=0;$i<$len;$i++){ $str = mb_substr($text, $i, 1, 'utf-8'); if(strlen($str) >= 4) continue;//emoji表情为4个字节 $newText .= $str; } return $newText; }