可以使用正则表达式和 PHP 的 preg_replace 函数来移除微信昵称中的 emoji 字符。以下代码演示了如何实现:
$nickname = "微信昵称😊";
$nickname = preg_replace('/[\x{1F600}-\x{1F64F}]/u', '', $nickname);
echo $nickname; // 输出:微信昵称
在正则表达式中, \x{1F600}-\x{1F64F}
表示 Unicode 编码为 U+1F600 至 U+1F64F 的 emoji 表情,通过添加 /u
模式修饰符,可以支持此类 Unicode 字符集。
这样,使用 preg_replace 函数替换掉昵称中的 emoji 表情即可。
如果还是有特殊字符处理不了,可以使用以下函数处理
/**
* 移除微信昵称中的emoji字符
* @param type $nickname
* @return type
*/
function removeEmoji($nickname) {
$clean_text = "";
// Match Emoticons
$regexEmoticons = '/[\x{1F600}-\x{1F64F}]/u';
$clean_text = preg_replace($regexEmoticons, '', $nickname);
// Match Miscellaneous Symbols and Pictographs
$regexSymbols = '/[\x{1F300}-\x{1F5FF}]/u';
$clean_text = preg_replace($regexSymbols, '', $clean_text);
// Match Transport And Map Symbols
$regexTransport = '/[\x{1F680}-\x{1F6FF}]/u';
$clean_text = preg_replace($regexTransport, '', $clean_text);
// Match Miscellaneous Symbols
$regexMisc = '/[\x{2600}-\x{26FF}]/u';
$clean_text = preg_replace($regexMisc, '', $clean_text);
// Match Dingbats
$regexDingbats = '/[\x{2700}-\x{27BF}]/u';
$clean_text = preg_replace($regexDingbats, '', $clean_text);
//截取指定长度的昵称
$clean_text = ds_substing($clean_text,0,20);
return trim($clean_text);
}