PHP 清除emoji表情

1.发现采集来的文本突然为空,寻找原因是emoji表情

2.网上寻找的办法有有编码,有修改mysql字符集,太麻烦,我想直接转码或者删掉emoji表情;庵后转码一时半会儿没找到办法,最简单粗暴就是删掉了。

3.往上搜索了一大圈,都不管用, chatGPT3.5和4都试了几种都不管用,还是CNDN一位网友分享的能用了,代码如下

public function removeEmoji($text) {//测试失败
		// 移除 emoji 表情的正则表达式
		//$emojiPattern = '/[\x{1F600}-\x{1F64F}]|[\x{1F300}-\x{1F5FF}]|[\x{1F680}-\x{1F6FF}]|[\x{2600}-\x{26FF}]|[\x{2700}-\x{27BF}]/u';
		$emojiPattern = '/(\ud83c[\udf00-\udfff])|(\ud83d[\udc00-\ude4f\ude80-\udeff])|[\u2600-\u2B55]/g';
	
		// 使用正则表达式替换 emoji 为空字符串
		$filteredText = preg_replace($emojiPattern, '', $text);
	
		return $filteredText;
	}

	public function encodeEmoji($text) {//测试失败
		// 将字符串编码为 UTF-8
		$encodedText = mb_convert_encoding($text, 'UTF-8', 'auto');
		return $encodedText;
	}

	public function remove_emojis($string) {//测试失败
		// This pattern will match most emojis
		$regex = '/[\x{1F600}-\x{1F64F}\x{1F300}-\x{1F5FF}\x{1F680}-\x{1F6FF}\x{1F700}-\x{1F77F}\x{1F780}-\x{1F7FF}\x{1F800}-\x{1F8FF}\x{1F900}-\x{1F9FF}\x{1FA00}-\x{1FA6F}\x{1FA70}-\x{1FAFF}\x{2600}-\x{26FF}\x{2700}-\x{27BF}\x{1F1E6}-\x{1F1FF}\x{1F191}-\x{1F251}\x{1F004}\x{1F0CF}\x{1F170}-\x{1F171}\x{1F17E}-\x{1F17F}\x{1F18E}\x{3030}\x{2B50}\x{2B55}\x{2934}-\x{2935}\x{2B05}-\x{2B07}\x{2B1B}-\x{2B1C}\x{3297}-\x{3299}\x{303D}-\x{303F}\x{24C2}-\x{24C4}\x{25AA}-\x{25AB}\x{25B6}\x{25C0}\x{25FB}-\x{25FE}\x{00A9}\x{00AE}\x{2122}\x{2139}\x{2C60}\x{2C6F}\x{2E3A}-\x{2E3B}\x{2E80}-\x{2E99}\x{2E9B}-\x{2EF3}\x{2F00}-\x{2FD5}\x{2FF0}-\x{2FFB}\x{3000}-\x{303E}\x{3041}-\x{3096}\x{3099}-\x{30FF}\x{3105}-\x{312F}\x{3131}-\x{318E}\x{3190}-\x{31BA}\x{31C0}-\x{31E3}\x{31F0}-\x{321E}\x{3220}-\x{32FE}\x{3300}-\x{4DBF}\x{4E00}-\x{9FFC}\x{A000}-\x{A48C}\x{A490}-\x{A4C6}\x{F900}-\x{FA6D}\x{FA70}-\x{FAD9}\x{FE10}-\x{FE19}\x{FE30}-\x{FE52}\x{FE54}-\x{FE66}\x{FE68}-\x{FE6B}\x{FF01}-\x{FF60}\x{FFE0}-\x{FFE6}\x{1B000}-\x{1B001}\x{1F000}-\x{1F02B}\x{1F030}-\x{1F093}\x{20000}-\x{2A6D6}\x{2A700}-\x{2B734}\x{2B740}-\x{2B81D}\x{2B820}-\x{2CEA1}\x{2CEB0}-\x{2EBE0}\x{2F800}-\x{2FA1D}\x{30000}-\x{3134A}]+/u';
	
		// Replace all emojis with an empty string
		return preg_replace($regex, '', $string);
	}	

	public function removeEmojiChar($str)//测试成功
	{
		$mbLen = mb_strlen($str);
		
		$strArr = [];
		for ($i = 0; $i < $mbLen; $i++) {
			$mbSubstr = mb_substr($str, $i, 1, 'utf-8');
			if (strlen($mbSubstr) >= 4) {
				continue;
			}
			$strArr[] = $mbSubstr;
		}
		
		return implode('', $strArr);
	}

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值