StringReplacerPHP

0
2 года назад
2 года назад
2 года назад
2 года назад
README.md

Автозамена, авто модерация строк.

Запрещенные в чатах и комментариях слова могут быть замаскированы, являться частью атрибутов html тегов итп.

Например если в чате недопустимо слово

hren
, то нас могут поджидать вот такие подводные камни:

Решить проблему маскировки и рассеивания символов одними лишь регулярными выражениями будет не просто. Поэтому часть анализа строки производится программно.

Описание алгоритма: replacer algorithm

Исходная строка очищается от тегов, и в уже упрощенной строке производится поиск. Создается массив сопоставлений символов чистой строки с исходной.

Далее обычным поиском по строкам ищем совпадения в упрощенной строке и через массив сопоставления символов очищаем исходную строку.

Данный алгоритм имеет не высокую сложность O(n) и его можно применять к очень большим строкам.

Примеры обработки строк:

Удаление 'cat' только вне тегов, точное совпадение. Исходная строка: "<div class="cat">cat category subcategory bobcat</div>" Обработанная строка: "<div class="cat">[deleted] category subcategory bobcat</div>" Удаление 'cat' только вне тегов, любое совпадение. Исходная строка: "<div class="cat">cat category subcategory bobcat</div>" Обработанная строка: "<div class="cat">[deleted] [deleted] [deleted] [deleted]</div>" Удаление 'ход', точное совпадение. Исходная строка: "пароход ход проход проходить" Обработанная строка: "пароход [deleted] проход проходить" Удаление 'ход', любое совпадение. Исходная строка: "пароход ход проход проходить" Обработанная строка: "[deleted] [deleted] [deleted] [deleted]" Удаление маскированных слов путем вставки символов между буквами. Исходная строка: "обман о.б.м.а.н о🤥бм🤥ан" Обработанная строка: "[deleted] [deleted] [deleted]"

Приложение позволяет удалять/изменять изображения и ссылки в html коде.

Оно оно работает за счет классов и методов расширения php-dom и не имеет пользовательских алгоритмов.