Как установить мат-фильтр для сайта на php?

Подскажите как установить замену матерных (и не только) слов на **** или любое слово .
Существуют коды , но инструкции по их установке нету .
один из кодов
@setlocale(LC_ALL, array ('ru_RU.CP1251', 'rus_RUS.1251'));

$pattern = "/\w{0,5}[хx]([хx\s\!@#\$%\^&*+-\|\/]{0,6})[уy]([уy\s\!@#\$%\^&*+-\|\/]{0,6})[Єiлeеюий¤]\w{0,7}|\w{0,6}[пp]([пp\s\!@#\$%\^&*+-\|\/]{0,6})[iие]([iие\s\!@#\$%\^&*+-\|\/]{0,6})[3зс]([3зс\s\!@#\$%\^&*+-\|\/]{0,6})[дd]\w{0,10}|[сcs][уy]([уy\!@#\$%\^&*+-\|\/]{0,6})[4чkк]\w{1,3}|\w{0,4}[bб]([bб\s\!@#\$%\^&*+-\|\/]{0,6})[lл]([lл\s\!@#\$%\^&*+-\|\/]{0,6})[y¤]\w{0,10}|\w{0,8}[еЄ][bб][лске@eыиаa][наи@йвл]\w{0,8}|\w{0,4}[еe]([еe\s\!@#\$%\^&*+-\|\/]{0,6})[бb]([бb\s\!@#\$%\^&*+-\|\/]{0,6})[uу]([uу\s\!@#\$%\^&*+-\|\/]{0,6})[н4ч]\w{0,4}|\w{0,4}[еeЄ]([еeЄ\s\!@#\$%\^&*+-\|\/]{0,6})[бb]([бb\s\!@#\$%\^&*+-\|\/]{0,6})[нn]([нn\s\!@#\$%\^&*+-\|\/]{0,6})[уy]\w{0,4}|\w{0,4}[еe]([еe\s\!@#\$%\^&*+-\|\/]{0,6})[бb]([бb\s\!@#\$%\^&*+-\|\/]{0,6})[оoаa@]([оoаa@\s\!@#\$%\^&*+-\|\/]{0,6})[тnнt]\w{0,4}|\w{0,10}[Є]([Є\!@#\$%\^&*+-\|\/]{0,6})[б]\w{0,6}|\w{0,4}[pп]([pп\s\!@#\$%\^&*+-\|\/]{0,6})[иeеi]([иeеi\s\!@#\$%\^&*+-\|\/]{0,6})[дd]([дd\s\!@#\$%\^&*+-\|\/]{0,6})[oоаa@еeиi]([oоаa@еeиi\s\!@#\$%\^&*+-\|\/]{0,6})[рr]\w{0,12}/i";

$replacement = "÷ензура";

$text = preg_replace($pattern, $replacement, $text);

/*
$pattern - то что ищем

$replacement - то чем замен¤ем

$text - то что обрабатываем
*/
  • Вопрос задан
  • 3072 просмотра
Пригласить эксперта
Ответы на вопрос 4
со старого известного скрипта.

// выражения, которые где угодно считаются матом
   $f_pregmat='~'.
   '[^и][hхx][уyu][йyяij]|'.   // защита от: прихуй
   '[hхx][уyu][eеЁ][tlvлвт]|'.
   '[hхx][уyu][йyijoeоеёЁ]+[vwbв][oiоы]|'.
   '[pп][ieие][dдg][eaoеао][rpр]|'.
   '[scс][yuу][kк][aiuаи]|'.
   '[scс][yuу][4ч][кk]|'.  
   '[3zsз][aа][eiе][bpб][iи]|'.
   '[^н][eе][bpб][aа][lл]|'.   // защита от: не бал*
   'fuck|xyu|'.                             
   '[pп][iи][zsз3][dд]|'.
   '[z3ж]h?[оo][pп][aаyуыiеe]'.
   '~si';

// сложные слова, типа "оскорблять", писать с пробелом перед словом
   $f_pregmat2='~'.
   ' фак |'.
   ' лох |'.
   ' [бb6][лl]([яy]|ay)|'.
   ' [eiе][bpб][iи]|'.
   ' [eiе][bpб][aeаеёЁ][tlтл]'.
   '~si';

if (preg_match($f_pregmat," $tmp ") || preg_match($f_pregmat2," $tmp ")) {
    echo 'Не нужно ругаться!';
}
Ответ написан
Комментировать
lxfr
@lxfr
Эмм...

Берем и заменяем.
$text = "куча матов";
$replacement = "÷ензура";
$text = preg_replace($pattern, $replacement, $text);
echo $text;

ВСЕ.
Только вот рабочая эта регулярка или нет я понятия не имею.
Ответ написан
Комментировать
profesor08
@profesor08 Куратор тега PHP
Что только не придумывай, я за пару секунд найду способ написать все что мне нужно, и никакие фильтры не помогут. Делать подобную фильтрация надо опционально, чтоб пользователь мог сам выбрать. Во вторых тебе нужен лишь словарь "плохих" слов, все что встречается там - заменяй на что-то. Регулярка тебе тут не поможет.
Ответ написан
Комментировать
@kstyle
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы