如何使用php防止zalgo文本

时间:2015-10-03 10:57:04

标签: php regex unicode zalgo

我的图片板上有Zalgo的问题。

下面的文字弄乱了我的图像板。有没有办法防止这些字符并“修复”或清理文本?

示例文本 Source

所有人都爱我所有我失去了他来的pon̷他̶̮他来到ich或渗透所有我的面对我的面孔ᵒh上帝不会NOO̼OONΘ停止一个*̶͑̾̾̅ͫ͏̙̤g͇̫͛͆̾ͫ̑͆l͖͉̗̩̳̟̍ͫͥͨe̠̅s͎a̧͈͖r̽̾̈͒͑enotrè̑ͧ̌aͨl̘̝̙ͤ̾̆ ZA̡͊͠͝LGΌISͮ҉̯͈͕̹̘TO͇̹̺Ɲ̴ȳ̳TH̘̘͖̯͍̭̉͠͠N̚Y̡H̸̡̡̪̯ͨ͊̽̅̾Ȩ̬̩̾͛ͪ̈͘C̷̙̝͖ͭ̏ͥͮ͟Oͮ͏̮̪̝͍M̖͊̒ͪͩͬ̚̚͜Ȇ̴̟̟͙̞ͩ͌͝S̨̥̫͎̭ͯ̿̔

我尝试使用此解决方案:

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

从这里采取:Remove special characters that mess with formating 但它只适用于拉丁字符 任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

此正则表达式替换$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!

我希望第二个正则表达式会帮助你。