如何使用 php 防止 zalgo 文本

How to prevent zalgo text using php

我的图像板上 Zalgo 有一些问题。

像下面这样的文字弄乱了我的图像板。有没有办法阻止这些字符和 "fix" 或清理文本?

示例文本 Source:

一切都是我丢了所有的东西,他来了,他来了,或者渗透到我的脸上,我的脸是我的脸,我ᵒhod no no no no noo onθ停止了An*̶͑̾̾g͇̫͛͆̾ͫ̑͆l͖͉̗̩̳̟̍ͫͥͨe。 otRè̑ͧ̌aͨl̘̝̙̃ͤ͂̾̆l̘̝̙̃ͤ͂̾̆Za̡͊͠͝lgόisͮ̂҉̯͈͕̹̘̱ to͇̹̺ͅɲ̴ȳ̳pth̘p̯͍̭o̚p̯͍̭o̚n̐Yy̡h̸̡̪̯ͨ͊̽̅̾̎ȩ̬̩̾͛ͪ̈́̀́͘c̷̙̲̝͖ͭ̏ͥͮ͟oͮ͏̮̪̝͍m̲̖͊̒ͪͩͬ̚̚͜ȇ̴̟̟͙̞ͩ͌͝s̨̥̫͎̭ͯ̿̔̀ͅ

我尝试使用这个解决方案:

$cleanMessage = preg_replace("/[^\x20-\xAD\x7F]/", "", $input_lines);

取自此处: 但它只适用于拉丁字符 谁能帮帮我?

此正则表达式替换 $text 变量中的每个上标符号:

$text = preg_replace("~[\p{M}]~uis","", $text);

如果 $text 包含带上标的字符,例如 กิ 此正则表达式将删除该上标符号,结果 $text 将仅包含 .

我改进了这个正则表达式并将其更改为仅过滤二级注音符号

$text = preg_replace("~(?:[\p{M}]{1})([\p{M}])+?~uis","", $text);

此正则表达式将仅过滤二级上标符号。 如果您想过滤 deutch 或其他带有保留标记的语言,请使用它。 这个正则表达式将转换这个词 -

͐̈ͩ̎Zͮ͌ͦ͆ͦͤÃ̉͛̄ͭ̈̚LͫG̉̋͂̉Oͨ͌̋͗!

进入这个:ZÄLͫGO!

希望第二个正则表达式对你有所帮助。