Это скорее комментарий, чем ответ, но комментарии ограничены по длине, и здесь есть большие проблемы.
Я считаю, что вы принципиально задаете неправильный вопрос!
Наверняка словари и черный список выделяют слова или фразы, которые вас хотите запретить, но будет ли этот список приемлемым для пользователей вашей системы? Будет ли текст, который пользователи вашей системы считают оскорбительным, но вы этого не делаете. Кто решает?
Например, люди, живущие here имеют проблемы или действительно живут люди here. Что делать, если вы поддерживали this football/soccer team. This person, вероятно, никогда не посещает Великобританию.
Затем вы попадаете в вопрос о анаграммах и сленге. FCUK - бренд высокой улицы в Великобритании (и в другом месте, я уверен). И тогда есть pr0n
(без ссылки!) Или NAMBLA.
Реальный вопрос: как остановить людей, использующих систему, использовать язык, который обычно неприемлем? И это больше проблема проектирования/социальной инженерии, чем проблема программирования. Я не думаю, что на этом сайте есть фильтрация слов/фраз, и все же здесь нет ничего, что могло бы нанести кому-либо обиду.
Вот идея - пусть ваши пользователи решат, что приемлемо! Используйте систему, основанную на репутации. Разрешить пользователям голосовать за пользователей, которые ведут себя и голосуют за пользователей, которые вызывают нарушение (с возможностью разрешать пользователям давать отзывы о голосовании, чтобы дать им возможность исправить их пути), а затем иметь возможность отфильтровывать пользователей с низким/отрицательная репутация.
YEah, После того, как я опубликовал это, я понял, что тестирование слов в тексте против массива или словаря было бы лучше, чем тестирование запрещенных слов в отдельности. Спасибо, что подтвердили, что идея Weasel –
уверена. словарь - лучший выбор - он реализован как хэш-таблица и будет работать быстрее. – WeaselFox
Проверьте мой ответ - есть более быстрый способ сделать это. – weltraumpirat