问题:

使用phpoffice/phpexcel导出数据不全或者文件有错误

原因:

因为mysql使用了utf8mb4的数据存储格式,所以导致有表情的字段会出现这种问题。

解决方案:

替换字段中的表情符号

// 在网上找到了两种方案
//第一种:
public static function filterEmoji($text, $replaceTo = '')
{
$clean_text = "";
// Match Emoticons
$regexEmoticons = '/[\x{1F600}-\x{1F64F}]/u';
$clean_text = preg_replace($regexEmoticons, $replaceTo, $text);
// Match Miscellaneous Symbols and Pictographs
$regexSymbols = '/[\x{1F300}-\x{1F5FF}]/u';
$clean_text = preg_replace($regexSymbols, $replaceTo, $clean_text);
// Match Transport And Map Symbols
$regexTransport = '/[\x{1F680}-\x{1F6FF}]/u';
$clean_text = preg_replace($regexTransport, $replaceTo, $clean_text);
// Match Miscellaneous Symbols
$regexMisc = '/[\x{2600}-\x{26FF}]/u';
$clean_text = preg_replace($regexMisc, $replaceTo, $clean_text);
// Match Dingbats
$regexDingbats = '/[\x{2700}-\x{27BF}]/u';
$clean_text = preg_replace($regexDingbats, $replaceTo, $clean_text);
return $clean_text;
}
//第二种
public static function wxNickNameFormat($nickName){
$value = json_encode($nickName);
$value = preg_replace("/\\\u[ed][0-9a-f]{3}\\\u[ed][0-9a-f]{3}/","*",$value);
return json_decode($value);
}




********************************只要思想不滑坡,办法总比困难多****************************