pavelforever/php-censure

There is no license information available for the latest version (dev-master) of this package.

A fork of antonlukin/php-censure with some updates

dev-master 2023-03-21 19:17 UTC

This package is not auto-updated.

Last update: 2024-05-16 17:37:15 UTC


README

  • Алгоритм достаточно надёжен и быстр, в т.ч. на больших объёмах данных
  • Метод обнаружения мата основывается на корнях и предлогах русского языка, а не на словаре
  • Слова "лох", "хер", "залупа", "сука" матерными словами не считаются (см. словарь Даля)
  • Разработка ведётся с 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/