Вощем сабж. (долго думал где писать, толи на фачесах, толи тут, толи в предложениях
Сразу скажу что я не против матов, но натолкнуло меня писать то что, вот прямо сейчас совсем дурея от безделья читал отзывы в гостевую на факесах, и гдето видел ответ что какой бы не поставь фильтр его все равно можно обойти. Так позвольте, уважаемые админы с вами не согласится
Он конечно 100%-ой защиты никогда не будет, но поубавить заметно можно. Тот фильтр что есть на стандартон пшпбб действительно отстой, они там цельные слова заменяют реплейсом, кажись, что есть в корне неверно. Верное решение - юзать рег. выражения . Мне недавно надо было писать такой фильтр для серьезной конторы тут, соответсвенно ошибок быть не должно было(а я вобщем не веб програмер а обычный, приложения для веба редко пишу, знания на уровне любителя). Я промучался три дня и вспомнил почти все матюки, написал их во всех возможных падежей итд, так потом мне легко показали как это обходили. И вот после еще одного дня мучений я наткнулся на этот гениальный (имхо) кусок кода из програмы chat.php.spb.ru(
http://php.spb.ru/chat ):
Код: Выделить всё
// выражения, которые где угодно считаются матом
$f_pregmat='~'.
'[nн][иеie][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сs][dд][аеуоaeuo]|'.
'[z3ж]h?[оo][pп][aаyуыiеe]'.
'~si';
// сложные слова, типа "оскорблять", писать с пробелом перед словом
$f_pregmat2='~'.
' [hхx][уyu][йyяij]|'.
' л *о *х |'.
' [бb6][лl]([яy]|ay)|'.
' [eiе][bpб][iи]|'.
' [eiе][bpб][aeаеёЁ][tlnтлн]|'.
' п *и *з *д|'.
' м *у *д *а|'.
' залуп'.
'~si';
мне пришлось лишь подогнать это под местный язык, исключить слова которые попадали под фильтр будучи нормальными, и вуаля, заработало на ура =) чего и вам желаю.