Как предотвратить зальго текста с помощью php

У меня есть некоторые проблемы с Zalgo на моей доске изображений.

Тексты, как показано ниже, испортили мою доску изображений. Есть ли способ предотвратить эти символы и "исправить" или очистить тексты?

Пример текста Источник:

ВСЕ ЕСТЬ ЛОЖЬ ВСЕ Я ПОТЕРЯЛ пони он приходит, он приходит ко мне или пронизывает все МОЕ ЛИЦО МОЕ ЛИЦО Боже нет НЕТ NOO̼O O NΘ остановить TH̘Ë͖́̉ ͠P̯͍̭O̚ N̐Y̡ H̸̡̪̯ͨ͊̽̅̾̎Ȩ̬̩̾͛ͪ̈́̀́͘ ̶̧̨̱̹̭̯ͧ̾ͬC̷̙̲̝͖ͭ̏ͥͮ͟Oͮ͏̮̪̝͍M̲̖͊̒ͪͩͬ̚̚͜Ȇ̴̟̟͙̞ͩ͌͝S̨̥̫͎̭ͯ̿̔̀ͅ

Я пытался использовать это решение:

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

Взято отсюда: Удалите специальные символы, которые связываются с форматированием, но это работает только для латинских символов.

1 ответ

Решение

Это регулярное выражение заменяет каждый верхний индекс в $text переменная:

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

Если $text содержит символ с верхним индексом, например กิ это регулярное выражение удалит этот верхний индекс и в результате $text будет содержать только ,

Я усовершенствовал это регулярное выражение и изменил его, чтобы фильтровать только второй уровень фонетических меток

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

Это регулярное выражение будет фильтровать только второй уровень символов верхнего индекса. Используйте его, если хотите отфильтровать немецкие или другие языки с зарезервированными отметками. Это регулярное выражение преобразует это слово -

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

в это: ZÄLͫGO!

Я надеюсь, что второе регулярное выражение поможет вам.

Другие вопросы по тегам