Skip to content

Определение наличия мата (нецензурных слов) в тексте, матотест на PHP

Notifications You must be signed in to change notification settings

pavelforever/php-censure

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Определение наличия мата (нецензурных слов) в тексте, матотест

  • Алгоритм достаточно надёжен и быстр, в т.ч. на больших объёмах данных
  • Метод обнаружения мата основывается на корнях и предлогах русского языка, а не на словаре
  • Слова "лох", "хер", "залупа", "сука" матерными словами не считаются (см. словарь Даля)
  • Разработка ведётся с 2005 года
  • Согласно статье 20.1 КоАП РФ нецензурная брань в общественных местах (интернет — место общественное) расценивается как мелкое хулиганство, за что установлена административная ответственность — наложение штрафа в размере от пятисот до одной тысячи рублей или административный арест на срок до пятнадцати суток.

Установка

composer require pavelforever/php-censure

Пример использования

Необходимо вызвать метод parse класса Censure\Censure с параметрами:

* @param    string       $s         строка для проверки
* @param    string       $delta     ширина найденного фрагмента в словах
*                                   (кол-во слов от матного слова слева и справа, максимально 10)
* @param    string       $continue  строка, которая будет вставлена в начале и в конце фрагмента
* @param    bool         $is_html   расценивать строку как HTML код?
*                                   в режиме $is_html === TRUE html код игнорируется, а html сущности заменяются в "чистый" UTF-8
* @param    string|null  $replace   строка, на которую заменять матный фрагмент, например: '[ой]' ($replace д.б. в кодировке $charset)
* @param    string       $charset   кодировка символов (родная кодировка -- UTF-8, для других будет прозрачное перекодирование)

Результатом будет либо замененный фрагмент матерного текста, либо false

Если $replace === NULL, то возвращает FALSE, если мат не обнаружен, иначе фрагмент текста с матерным словом.
Если $replace !== NULL, то возвращает исходную строку, где фрагменты мата заменены на $replace.
В случае возникновения ошибки возвращает код ошибки > 0 (integer):
  * PREG_INTERNAL_ERROR
  * PREG_BACKTRACK_LIMIT_ERROR (see also pcre.backtrack_limit)
  * PREG_RECURSION_LIMIT_ERROR (see also pcre.recursion_limit)
  * PREG_BAD_UTF8_ERROR
  * PREG_BAD_UTF8_OFFSET_ERROR (since PHP 5.3.0)
Или -1, если ReflectionTypeHint вернул ошибку
require __DIR__ . '/vendor/autoload.php';

$test = Censure\Censure::parse("хуй пизда");

if ($test === false) {
    echo 'Матерное слово не обнаружено'
}

Лицензия

Оригиальный код опубликован под лицензией http://creativecommons.org/licenses/by-sa/3.0/

About

Определение наличия мата (нецензурных слов) в тексте, матотест на PHP

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 100.0%