StringReplacerPHP
Автозамена, авто модерация строк.
Запрещенные в чатах и комментариях слова могут быть замаскированы, являться частью атрибутов html тегов итп.
Например если в чате недопустимо слово , то нас могут поджидать вот такие подводные камни:
Решить проблему маскировки и рассеивания символов одними лишь регулярными выражениями будет не просто. Поэтому часть анализа строки производится программно.
Описание алгоритма:
Исходная строка очищается от тегов, и в уже упрощенной строке производится поиск. Создается массив сопоставлений символов чистой строки с исходной.
Далее обычным поиском по строкам ищем совпадения в упрощенной строке и через массив сопоставления символов очищаем исходную строку.
Данный алгоритм имеет не высокую сложность 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 и не имеет пользовательских алгоритмов.