前段時間做了一個導出用戶信息(包含微信昵稱)到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; }