各位大佬【鎶樺彔姝烘妞呭】这种文字怎么用正则过滤掉[已解决]

@Ta 2022-04-21发布,2022-04-22修改 12300点击

【ѩ】【ȹ】【ü】【çµçƒ­æ°´å™¨】【閰掓暖钖у彴涓浣揿鐢】【璺嗘妩阆撴湇鍎跨璁粌】【鐜诲翱閰搁腑鍎跨鎷栭瀷】

数据里有很多这种字符,怎么才可以过滤掉,网上搜了几个方法正常的汉字也会过滤掉,不能用...
手机

回复列表(31|隐藏机器人聊天)
  • @Ta / 2022-04-21 / /
    这不是应该先处理乱码吗
    一个帅逼
  • @Ta / 2022-04-21 / /

    @Dieinwarm,里面有正常中文,都掺一块了微信截啊啊啊啊啊啊啊啊啊_20220421114425.png
    手机

  • @Ta / 2022-04-21 / /

    @童真再见,charCodeAt 应该是不行了,高频字和低频字混在一起的。
    image.png

    看看是否能从编码上校正,或者是从区位码上入手。

    image.png

    从区位码上能区分一些,但有的还是混在一起的。
    小米MIX2s(白)

  • @Ta / 2022-04-21 / /

    看起来像是用户名,有没有这种可能,人家就是输入的这样的看起来乱码的用户名呢?

    比如有人的用户名是【@undefined】 ,也有 【@手持两把锟斤拷@口中疾呼烫烫烫】呢?

    只要系统不崩溃,就让他存在吧。完了用户看到了,不满意的肯定会去自己修改。

    如果是系统漏洞,注意产生原因,避免一下就行了。
    小米MIX2s(白)

  • @Ta / 2022-04-21 / /

    这种是不是可以用编码转换一下?
    小米8(白)

  • @Ta / 2022-04-21 / /

    @艾木友尔尔巴,问题在于他不知道什么时候该转什么时候不该转
    小米MIX2s(白)

  • @Ta / 2022-04-21 / /

    @艾木友尔尔巴,试了转换的结果一样...@水木易安,这是购物类的热搜词,里面乱七八糟的啥都有,都显示出来也不好看,一百多万条看不过来,也没啥好办法,算了那就让它显示去吧
    手机

  • @Ta / 2022-04-21 / /

    @童真再见,转换了好像没区别还是一样的字
    手机

  • @Ta / 2022-04-21 / /

    @童真再见,搜索热词那就没法控制了,有可能是不同的客户端,甚至是各种爬虫来的。也有可能国外用户,某些特殊字符集的。改系统为 Unicode 体系才能保留源数据。

    我看了下区位码好像还是有点作用的。可以稍微降低一下乱码率。

    其次,从运营角度来说,热词不能因为用户输入的多就展示啊。还是需要有审核机制的。

    否则有人同行恶意破坏,输入 ddgcd 什么的。。。再反手一举报~
    小米MIX2s(白)

  • hik
    @Ta / 2022-04-21 / /

    貌似需要分词,很难搞
    https://cway.top

  • @Ta / 2022-04-21 / /

    @水木易安感谢大佬提醒,我查了里面还真有些沾边的词。。。
    手机

  • @Ta / 2022-04-21 / /

    @童真再见,如果一个词啥也搜不到,肯定不是热搜。所以只要实际搜一下,没有足够的匹配结果,就可以认定为乱码。

  • @Ta / 2022-04-21 / /

    @童真再见,另一个思路:
    汉语热搜通常是简体中文,而乱码有很大概率出现繁体中文。所以可以对文字调用简繁转换。如果转换前后不同,就很可能是乱码。

  • @Ta / 2022-04-21 / /

    @老虎会游泳,搜索那个不行,刚才试了还是能出结果。我在试试简繁转换看看
    手机

  • @Ta / 2022-04-22 / /

    @童真再见,似乎也没用。看起来需要动用自然语言处理技术了。或者用机器学习,用有监督学习,训练一个分类器,喂给它正常和不正常的文本,不断训练提升分类准确性。还可以自动生成训练数据(UTF-8转GBK后显示等,就能得到乱码文本)。

  • @Ta / 2022-04-22 / /

    @老虎会游泳,把文本还原成原始数据(如 UTF-8 编码前),然后用一些库/工具来预测编码,可行么?如:

    UTF-8 编码。。是能无损还原的。。吧?

  • @Ta / 2022-04-22 / /

    @无名啊@童真再见,确实可以:

    鐜诲翱閰搁腑鍎跨鎷栭瀷 (GBK) -> e78ebbe5b0bfe985b8e9b8ade584bfe7aba5e68b96e99e8b -> 玻尿酸鸭儿童拖鞋 (UTF-8)

    图片.png

    图片.png

  • @Ta / 2022-04-22 / /

    @无名啊@童真再见

    看起来该乱码是错把UTF-8字符串当作GBK字符串处理造成的。反向编码转换即可还原。

    gbkutf8.php,保存为UTF-8编码。

    <?php
    $arr = [
    	'ѩ', 'ȹ', 'ü', 'çµçƒ­æ°´å™¨', '閰掓暖钖у彴涓浣揿鐢', '璺嗘妩阆撴湇鍎跨璁粌', '鐜诲翱閰搁腑鍎跨鎷栭瀷',
    ];
    
    foreach ($arr as $v) {
    	$gbk = mb_convert_encoding($v, 'GBK', 'UTF-8'); // 文件是UTF-8的,想得到GBK字节序列需要进行编码转换
    	$hex = bin2hex($gbk);
    	echo "$v\t->\t$hex\t->\t$gbk\n"; // 虽然$gbk名义上是“GBK字节序列”,但它实际上是UTF-8字节序列,所以可以直接当作UTF-8字符串输出
    }
    

    不能完全还原,因为不能表示为合法GBK字符的UTF-8字符发生了丢失。

    图片.png

  • @Ta / 2022-04-22 / /

    @无名啊@童真再见,看起来有简单处理方法了,像18楼一样进行编码转换,转换完成后匹配一下里面有没有UTF-8汉字,如果有,那原始内容应该就是乱码。

添加新回复
回复需要登录