* @charset UTF-8 * @version 3.0.18 * @since 2005 */ function censure($s) { #предлоги русского языка: #:TODO: #[всуо]| #по|за|на|об|до|от|вы|вс|вз|из|ис| #под|про|при|над|низ|раз|рас|воз|вос| #пооб|повы|пона|поза|недо|пере|одно| #полуза|произ|пораз|много| $pretext = '(?:' . implode('|', array( '[нn] ?(?:[аa]|[еe][иi]) ?', #на, не, ни '(?:[пp]|[дdg])? ?[оo] ?', #по, до, о '[зz3] ?[аa] ?', #за '[пp] ?[рr] ?[оo] ?', #про '[оo] ?[тt] ?[ъь]? ?', #от(ъ) '[пp] ?[оo] ?[дdg] ?[ъь] ?', #под(ъ) '[пp] ?[еe] ?[рr] ?[еe] ?', #пере '[oо] ?[дdg] ?[нn] ?[оo] ?', #одно (~ однохуйственно) '[мm] ?[нn] ?[оo] ?[гg] ?[оo] ?', #много )) . ')'; /* #слова, которые не должны быть матом: $valid_words = 'подстраХУЙ, страХУЕт, верХУЕт, лиХУЯ, '. 'оскорБЛЯТЬ, граБЛЯ, БЛЯха, оБЛЯДеть'. 'барСУКА, барСУЧКА, '. 'шЕБАЛа, нЕБАЛованый, перЕБАЛтывай, потрЕБИТель, '. 'ХЕРсонская, парикмаХЕР, стиХЕРов, '. 'ЛОХматый, чертопоЛОХ, ЗАЛУПАть, дЕБЕТ '. 'еЕ БЕТмэн '; */ $badwords = '~'. #ХУЙ ' {PRETEXT}?(?!hue)[hхx] ?[уyu] ?[еeёйiяюju]|'. #{PRETEXT}ху(я|й|ю|е|ё) #ПИЗДА ' {PRETEXT}?[пp] ?[иi] ?[зz3] ?[дd]|'. #{PRETEXT}пизд #БЛЯ ' ([мm][оo][рpr][дd][оoаa])?[бb6] ?[лl] ?(я|ya)( ?[тд]| )|'. #бля(т|д), морд(о|а)бля(т|д)ская #ЕБИ #корректно обрабатываем фразу "..E БЕТа, гамма" ' {PRETEXT}?([eе] [бb6] [iиоoaаеeё]|[eе][бb6][iиоoaаеeё])|'. #{PRETEXT}еб(и|о|а|е|ё) #ПИДОР #корректно обрабатываем фразу "pjpeg, application" '[п] ?[ieеи] ?[дdg] ?[eеaаoо] ?[rpр]|'. #пид(о|е|а)р #FUCK ' ?f ?u ?[cс] ?k|'. #fuck #МУДАК ' [мm] ?[уy] ?[дdg] ?[аa]|'. #муда #ЖОПА #корректно обрабатываем фразу "Как решил тюменский арбитраЖ, О Переплате компания узнала только после акта сверки" #'[z3ж] ?h? ?[оo] ?[pп] ?[aаyуыiеeoо]|'. #жоп(а|у|ы|е|о) '(?document.write('сло'+'во') #хотя давать пользователю возможность использовать код на javascript нехорошо if (! function_exists('strip_tags_smart')) #оптимизация скорости include_once { include_once 'strip_tags_smart.php'; } $s = strip_tags_smart($s, true, true, array('comment', 'style', 'map', 'frameset', 'object', 'applet')); if (! function_exists('utf8_html_entity_decode')) #оптимизация скорости include_once { include_once 'utf8_html_entity_decode.php'; } #заменяем html-сущности в "чистый" UTF-8 $s = utf8_html_entity_decode($s, $is_htmlspecialchars = true); #неразрывный пробел заменяем на пробел ("\xc2\xa0" =  ) $trans = array( "\xc2\xad" => '', #вырезаем "мягкие" переносы строк (­) "\xcc\x81" => '', #вырезаем знак ударения (U+0301 «combining acute accent») #"\xc2\xa0" => ' ', #заменяем неразрывный пробел на обычный ); $s = str_replace(array_keys($trans), array_values($trans), $s); if (! function_exists('utf8_convert_case')) #оптимизация скорости include_once { include_once 'utf8_convert_case.php'; } $s = utf8_convert_case($s, CASE_LOWER); #получаем в массив только буквы и цифры #"с_л@о#во,с\xc2\xa7лово.Слово" -> "слово слово слово" preg_match_all('/(?> \xd0[\xb0-\xbf]|\xd1[\x80-\x8f\x91] #[а-я] | [a-z\d]+ )+ /sx', $s, $m); $s = implode(' ', $m[0]); #убираем все повторяющиеся символы #"сллоооовоо слово" -> "слово слово" $s = preg_replace('/( [\xd0\xd1][\x80-\xbf] #оптимизированное [а-я] | [a-z\d] ) \\1+ /sx', '$1', $s); //d($s); if (preg_match($badwords, ' ' . $s . ' ', $m)) { #d($m); return trim($m[0]); } return false; } ?>