Покинул форум
Сообщений всего: 56
Дата рег-ции: Февр. 2013
Помог: 0 раз(а)
Добрый день.
Хочу реализовать на сайте фильтр цензуры. И даже скорее не фильтр а условие. Скажем, если в строке имеются бранные слова, то выводим ошибку. В интернете искал решения, ничего хорошего не нашёл. Предлагают регулярки. Я попробовал парочку. Вроде и работают они, но многие слова пропускает. Незнаю как решить подобную задачу. Склоняюсь к использованию Базы данных со списком запрещенных слов и полнотекстового поиска по ним. Что посоветуете, как быть? Делаю фильтр для русского мата и английских ругательств.
IllusionMH
Отправлено: 02 Октября, 2013 - 15:32:25
Активный участник
Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011 Откуда: .kh.ua
Помог: 242 раз(а)
StasHappy, в_с_е_г_д_а__н_а_й_д_е_т_с_я__в_ а_р_и_а_н_т__к_о_т_о_р_ы_й__о_б_ о_й_д_е_т__ф_и_л_ь_т_р.
Модерация и вараинт бана или запрета на отправку следующих сообщений при появлении жалобы на мат.
StasHappy
Отправлено: 02 Октября, 2013 - 15:36:06
Новичок
Покинул форум
Сообщений всего: 56
Дата рег-ции: Февр. 2013
С помощью регулярки, можно очистить строку от символов и оставить только буквы и цифры. А далее проверить на цензуру. Это не проблема. Но как лучше реализовать сам механизм? С помощью БД или как нибудь проще можно.
Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011 Откуда: .kh.ua
Помог: 242 раз(а)
StasHappy, да сколько матофильтров не ставили, все равно будут проблемы если употреблять подобные(см. слева) слова. upd. Плохо обоработает эту строку, придется еще и весь словарь цензурных слов держать.
Так что если и делать, то
Покинул форум
Сообщений всего: 56
Дата рег-ции: Февр. 2013
Помог: 0 раз(а)
Цитата:
Бросьте ето дело. Иначе пользователи будут страдать, а метрщики все равно найдут обход
Бросить не могу. Работаю над серьёзным проектом. Вы лучше посоветуйте мне решение данной задачи. Есть какой либо вариант, наиболее лучший чем использование БД с полнотекстовым поиском? (Добавление)
Цитата:
Модерация ... жалобы на мат.
Сервис, над которым я работаю, не занимаетс предварительной модерацией пользователиских сообщений. Пользователей много и сообщений много. За каждым не уследишь.
EuGen
Отправлено: 02 Октября, 2013 - 15:56:38
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Решения не существует.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
StasHappy
Отправлено: 02 Октября, 2013 - 16:10:58
Новичок
Покинул форум
Сообщений всего: 56
Дата рег-ции: Февр. 2013
Помог: 0 раз(а)
Цитата:
Решения не существует.
Значит оно ещё просто не найдено.
Ch_chov
Отправлено: 02 Октября, 2013 - 16:20:56
Постоянный участник
Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008 Откуда: из города
Помог: 90 раз(а)
А ещё можно смешивать русские и латинские символы.
IllusionMH
Отправлено: 02 Октября, 2013 - 16:29:17
Активный участник
Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011 Откуда: .kh.ua
Помог: 242 раз(а)
Ch_chov, а еще можно использовать ASCII "картинки".
Тут поможет только эвристический алгоритм, который скопирован с мозга водопроводчика, сапожника, прапорщика и т.д.
Как делать плохое(матерится) так смекалка сразу включится.
Попробуйте реализовать свой вариант и посмотреть нагрузку и отношение правильных к неправильным срабатываниям.
Статистика покажет что при большой затрате ресурсов на написание и работу алгоритма, эффективность будет низкой.
Так что система тикетов — и все кому не нравятся мат имеют шансы "повлиять" на наказание виновных.
Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008 Откуда: из города
Помог: 90 раз(а)
Вообще таких фильтров на php куча в сети. Можете по гуглить. Про эффективность вам уже обосновали. Хотя я сам лично ни одного такого фильтра не тестировал.
EuGen
Отправлено: 02 Октября, 2013 - 17:20:51
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
StasHappy пишет:
Значит оно ещё просто не найдено.
Хорошо. Предположим, есть множество разрешённых символов и множество тех, что будет сначала вырезать фильтр (как Вы упоминали выше - чтобы не дать возможности чего-либо (п)(о)(д)(о)(б)(н)(о)(г)(о) - про то, что выражение типа F(x)=x пострадает - умолчим). Тогда, пусть слово "FOO" считается запрещённым, а, например, символ "H" будет разрешён.
Пожалуйста, решите подобное:
- и подобных примеров будет великое множество. Слишком сильные меры (вырезание спец. символов, запрет нескольких сообщений подряд и т.п.) - приведёт к тому, что обмен сообщениями будет затруднён для нормальных пользователей. Те, кто желают нарушить - применят вдвое больше усилий, чтобы обойти фильтр, после того, как увидят, что таковой фильтр существует.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
StasHappy
Отправлено: 02 Октября, 2013 - 19:53:48
Новичок
Покинул форум
Сообщений всего: 56
Дата рег-ции: Февр. 2013
EuGen. Врятли пользователи будут утруждать себя этим. Мне не требуется идеальных решений. Достаточно простого, но действенного варианта. Я думаю сделать следующим образом. Если пользователь вводит бранные слова и отправляет текст, то он будет предупрежден о правовой ответственности с указанием на соответсвующие правила и нормы. Мне по идее не нужен фильтр с заменой. Мне нужны только два состояния: TRUE или FALSE. Если TRUE, то значит строка содержит бранные выражения и мы останавливаем отправку сообщения и выводим предупреждение. Примерно так. Думаю если пользователь получит предупреждение, то он не будет дальше упорствовать в своих начинаниях. (Добавление)
У меня последний вопрос. Как лучше сделать.. Или создать таблицу в БД и занести в неё список запрещенных слов. А в последствии уже по ним проверять строку(с помощью полнотекстового поиска). Или записать запрещенные слова в массив и пихнуть все это в отдельных php файл. Который впоследствии, будем подключать во время работы нашей функции. Что будет работать быстрее?
Покинул форум
Сообщений всего: 483
Дата рег-ции: Янв. 2011
Помог: 6 раз(а)
StasHappy
я не ленивый и поэтому
╔══╦╗╔╗╔╗╔══╗─╔══╦══╗
║╔╗║║║║║║║╔╗║─║╔╗║╔╗║
║║║║║║║║║║║║║─║║║║╚╝║
║║║║║║║║║║║║║─║║║║╔╗║
║║║║╚╝╚╝╠╝╚╝╚╦╝║║║║║║
╚╝╚╩════╩════╩═╝╚╩╝╚╝
угадай какую букву я хотел поставить вместо буквы "Ш" и как ты это сможешь остановить, на это дело потратил 5 секунд!
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.