Как предотвратить зальго текста с помощью 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!
Я надеюсь, что второе регулярное выражение поможет вам.