A lightweight, multilingual profanity detection and censorship library written in native PHP.
Supports dynamic language loading, custom word lists, and Unicode-safe pattern matching.
- Detects profanity in text using prebuilt JSON wordlists
- Supports multiple languages:
- English (
en) - Russian (
ru) - Italian (
it) - Indonesian (
id) - Chinese (
zh) - Japanese (
ja)
- English (
- Add or override custom bad words
- Merge multiple language filters or use all at once
- Extract, censor, or save profane words
- PHPUnit test suite included
Clone the repo and include via Composer:
composer installMake sure your autoloader can resolve ProfanityFilter\ProfanityFilter from /src.
use ProfanityFilter\ProfanityFilter;
$filter = new ProfanityFilter('en');
$text = "You idiot!";
if ($filter->containsProfanity($text)) {
echo "Profanity detected!";
}$censored = $filter->censor("You dumb bastard!");
echo $censored; // You **** *******!$words = $filter->getProfaneWords("That was stupid and shitty.");
print_r($words); // ['stupid', 'shitty']$filter->setLanguages(['en', 'ru']);$filter->useAllLanguages();$filter->addCustomWords(['meanie', 'dummy']);$filter->saveUpdatedWordList(__DIR__ . '/my-words.json');
$filter->setWordListFromFile(__DIR__ . '/my-words.json');vendor/bin/phpunit tests/Make sure you’ve run:
composer dump-autoloadto register autoload-dev.
Each language is stored in a separate JSON file in src/data/, e.g.:
src/data/en.json
src/data/ru.json
src/data/zh.json
You can extend these manually or via the library methods.
MIT Licensed. Use at your own discretion — offensive content warning applies.
Feel free to fork, submit PRs, or suggest new languages and improvements!