{% else-1 %}
Здравствуйте дорогие друзья! Моя новая статья о анти-мат функции написанной на php.
Функцию я написал с нуля, и при тестировании убедился, что она работает практически
безотказно, а именно вырезает из текста все известные мне, да и наверно и всем вам матерные слова русского языка.
Основная работа функции (я её назвал antimat()) осуществляется за счет поиска и замены по регулярным выражениям, находящимся в массиве. Эти шаблоны регулярных выражений я очень кропотливо подобрал, мне пришлось для этого прочитать несколько статей о мате и нецензурных выражений, при этом узнал корни нецензурных слов и создал на полученных знаниях регулярные выражения для нахождения в тексте этих корней и ликвидации их вместе со словом в котором этот корень обнаружен.
Код программы:

Функция antimat()

                        
function antimat($text) {

$s = '[^wа-я]*?'; // параметр для попуска между буквами для нахождения матерных слов типа "м а т" и тд

$cenzur = '[цензура]'; // на это значения переменной будут заменяться нецензурные слова

//массив содержащий шаблоны PCRE регулярных выражений, для поиска нецензурных корней
$ArrayPattern = array(
'[^вvw]'.$s.'[еeё]'. $s .'[бb]',
'[лl]'.$s.'[оo0]'.$s.'[хxh]',
'[еe]'.$s.'[лl]'.$s.'[дd]'.$s.'[аa@]',
'[мm]'.$s.'[uyу]'.$s.'[дd]'.$s.'[^рpr]',
'[пp]'.$s.'[иiеe]'.$s.'[зz3]'.$s.'[дd]',
'[^ю]'.$s.'[бb]'.$s.'[лl]'.$s.'(?:я|ja|j@)',
'[мm]'.$s.'[аa@оo0]'.$s.'[нn]'.$s.'[дd]',
'[дd]'.$s.'[rpр]'.$s.'[аa@оo0]'.$s.'(?:[ч4]|ch|сh)',
'[хxh]'.$s.'[уyuеe]'.$s.'(?:[ийijрprеёeяюлl]|ja|jа|ju|jи)',
'[зz3]'.$s.'[аa@]'.$s.'[лl]'.$s.'[уyu]'.$s.'[пp]',
'[гg]'.$s.'[аa@оo0]'.$s.'[нn]'.$s.'[дd]'.$s.'[оo0]',
'[пp]'.$s.'[иiеe]'.$s.'[дd]'.$s.'[аa@оo0иiрpr]'.$s.'[^гgфf]',
);

// перебираем каждый элемент массива ($ArrayPattern) и добавляем к нему еще нужные предикаты (они подходят для всех элементов массива)
foreach($ArrayPattern as $key = > $value)
{
$Pattern[] = '/(.*?)(?:[^s]*' . $value . '[^s]*)(.*?)/is';
}

// выполняем замену в тексте (пришедшем из аргумента функции $text) по шаблонам находящимся в массиве используя функцию preg_replace()
$no_mat = preg_replace($Pattern , "\1". $cenzur . "\2", $text);


// возвращаем текст после замены нецензурных слов

return $no_mat;

}
? >

Функция конечно не совершенная, есть над чем поработать, но попробовать её в действии следует, я не долго её тестировал, разве лишь на производительность, если вам не трудно сообщите в каких словах эта функция неправильно себя ведет, связавшись со мной по моим контактам, либо оставив комментарий здесь…
2 28 0
Без комментариев...