Поиск плохих слов в тексте, фильтруем мат
Самый простой, какой только можно придумать – фильтр для слов через php! Как бы нам не хотелось жить в идеальном мире, но в нем как было так и есть множество идиотов, считающих себя самыми умными!
Чтобы им так не казалось на сайтах ставятся фильтры различной сложности и даже есть целые какие-то библиотеки! Или очень часто называют фильтрация плохих слов, матерный фильтр и т.д…
Как отфильтровать мат и др.нежелательные слова
- Алгоритм фильтра плохих слов/мата php
- Скрипт фильтра плохих слов/мата php
- Скрипт 2 фильтра плохих слов/мата php
- Поиск и замена плохих слов/мата php
- Скачать
Алгоритм фильтра плохих слов/мата php
Это скорее не алгоритм, а необходимые элементы.
В некую переменную мы должны положить наш текст, который нужно проверить.
У нас должна быть функция, которая будет проверять этот текст на наличие мата.
Массив "мат слов". Лучше всего использовать, построчно записанные "мат слова", в переменную, чтобы не заморачиваться с точками и запятыми при создании массива. А потом с помощью explode - автоматически создать массив.
И далее сам процесс... в цикле проверять наличие мат слов в тесте.
Самая главная проблема в фильтрации мата - это поиск и исключение матерных слов в тексте!
Слово матерное, может быть в другом регистре, матерное слово может быть с пробелом, с тире, и др.знаками, с числом.
Итого, напрашивается вывод, что нужно избавиться от всех знаков и пробелов, кроме букв, все привести к одному регистру, например к строчным -> strtolower и уже после этого нужно искать то слово!
Как искать матерное слово!?
Поскольку нужно проверять на совпадение каждого слова, то понадобится цикл
Последнее время, чаще всего использую функцию substr_count - коротко записывается, хорошо работает - просто нравится!
Замена матерного слова
После того, как вы нашли слово, то его нужно заменить на... что-то... на ваше усмотрение
Скрипт фильтра плохих слов/мата php
Здесь надо сказать, что в какой-то момент strtolower так меня притомил, что я написал собственную функцию, чтобы она работала всегда -> strtolower собственная функция!
1). Фильтрация плохих слов/мата в php.
Для этого нам понадобится два объекта
Текст нам нужно привести в нижний регистр(как я уже ранее говорил) -> strtolower
1). Теперь немного о strtolower, если у вас
2). Если у вас
Далее нам потребуется массив слов, которые будем искать в тексте
(
[0] => привет
[1] => пока
[2] => враг
)Самый простой скрипт фильтрации плохих слов/мата php
Этот скрипт сделан для понимания, как фильтрация должна работать...
{
$res = @substr_count($text , $array[$i]);
if($res == true){ $Bad = " У нас нельзя ругаться "; }
}
Теперь давайте сделаем форму и в ней вы можете отправить какой-то текст с одним словам из выше указанного массива.
Скрипт 2 фильтра плохих слов/мата php
Второй вариант ничем не отличается по логике от первого, лишь было отличие в функции, которая искала совпадения [strpos]
Это немного мудренее и вначале я использовал именно этот код…
{
if (@strpos($proverka_bad_words, trim($words[$i])) !== false)
{
$Bad = " У нас нельзя ругаться ";
}
}Поиск и замена плохих слов/мата php
Что касается замены плохих слов, и вывода текста с каким-то, на что было заменено.. это - слишком трудоемкая задача и нет явного решения.
Я встречался с такой задачей на нашей системе комментирования, и пришел к следующему - отправка на проверку админа данного сообщения, если мат обнаружен.
Если сообщение, с матом прошло фильтр, то просто вручную удаляем сообщение. Пользователя блокируем навсегда!
Всегда можете пойти своим путем.
Свои комменты в ожидании переделки!
Когда сделаю не знаю!
Времени нет...
Иначе сообщение будет удалено, вас в бан - все просто!
Но если, сил нет как хочется высказать всё, что вы думаете об этом, пожалуйста - комменты от Vk - форма ниже: