Фильтры непристойности: плохая идея или невероятно плохая идея общения?
Кроме того, нельзя забыть Нерассказанная история SpeedChat в Toontown , где даже при использовании «белого списка безопасных слов» 14-летний подросток быстро обошел его:
«Я хочу засунуть моего Жирафа с длинной шеей в вашего пушистого белого зайчика».
Итог: в конечном счете, для любой системы, которую вы внедряете, ничто не может заменить рецензирование человеком (как одноранговым, так и другим). Не стесняйтесь реализовывать элементарный инструмент, чтобы избавиться от попутчиков, но для решительного тролля вам абсолютно необходим подход, не основанный на алгоритме.
Полезна также система, которая устраняет анонимность и вводит подотчетность (что хорошо справляется с переполнением стека), особенно для борьбы с G.I.F.T. Джона Габриэля
Вы также спросили, где можно получить списки ненормативной лексики, чтобы начать работу - один проект с открытым исходным кодом, который нужно проверить, это Dansguardian - проверьте исходный код для списков ненормативной лексики по умолчанию. Существует также дополнительная третья сторона Список фраз , которую вы можете загрузить для прокси-сервера, которая может быть полезной для вас полезной информацией.
Отредактируйте в ответ на вопрос edit: Спасибо за разъяснение того, что вы пытаетесь сделать. В этом случае, если вы просто пытаетесь сделать простой текстовый фильтр, есть два способа сделать это. Один из них - создать одно длинное регулярное выражение со всеми запрещенными фразами, которые вы хотите подвергнуть цензуре, и просто выполнить поиск / замену регулярного выражения. Регулярное выражение типа:
$filterRegex = "(boogers|snot|poop|shucks|argh)"
и запустите ее на входной строке, используя preg_match () , чтобы протестировать попадание,
или preg_replace () , чтобы убрать их.
Вы также можете загружать эти функции с массивами, а не с одним длинным регулярным выражением, и для длинных списков слов это может быть более управляемым. См. preg_replace () , где приведены несколько хороших примеров того, как можно гибко использовать массивы.
Дополнительные примеры программирования на PHP см. На этой странице для несколько продвинутого универсального класса для фильтрации слов, который * выделяет центральные буквы из слов, подвергшихся цензуре, и этот предыдущий вопрос переполнения стека у него также есть пример PHP (главная ценная часть - подход фильтрованных слов на основе SQL - можно обойтись без компенсатора leet-talk, если вы сочтете это ненужным).
Вы также добавили: « Получение списка слов в первую очередь является реальным вопросом. » - в дополнение к некоторым из предыдущих ссылок дансгаурдов, вы можете найти этот удобный. zip из 458 слов, чтобы быть полезными.