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;
}

  

posted @ 2019-10-10 16:43  疯一样的狼人  阅读(1994)  评论(0编辑  收藏  举报