hottomali / profanity-bundle
不良词检查器。
v1.1.6
2019-02-20 10:35 UTC
Requires
- php: ^7.1
- doctrine/orm: >=2.4
- symfony/console: ~3.4|~4.0
- symfony/framework-bundle: ^3.4|^4.0
- symfony/validator: ^3.4|^4.0
- symfony/yaml: ^3.4|^4.0
Suggests
- doctrine/doctrine-bundle: For integration with Doctrine
- doctrine/orm: For integration with Doctrine ORM
README
关于分支的说明:这是一个基于 ivan-griga/ProfanityBundle 的分支,用于测试和升级此包以兼容 Symfony 5。意图是在代码更新后将其与原始代码合并(如果可能)。除非您是更新团队的一部分,否则请勿直接使用此代码。
Profanity Filter Bundle
一个用于测试字符串中是否含有不良词的 symfony 包。
直接匹配:检查字符串是否与不良词列表匹配。例如,badword
替换:使用每个字母的替换字符检查字符串中的不良词。例如,bâdΨ0rd
隐藏:检查字符串中的不良词被标点符号隐藏。例如,b|a|d|w|o|r|d
组合:也支持以上组合。例如,b|â|d|Ψ|0|rr|d
安装
- 使用 composer 安装此包。
php composer.phar require vangrg/profanity-bundle
- 添加到您的 AppKernel.php 中
new Vangrg\ProfanityBundle\VangrgProfanityBundle(),
- 如果您想使用数据库来存储您的不良词
php bin/console doctrine:schema:update --force
- 用于填充默认的不良词数据
php bin/console vangrg:profanities:populate
用法
默认用法
<?php $check = $this->get('vangrg_profanity.checker'); $hasProfanity = $check->hasProfanity($badWords); $cleanWords = $check->obfuscateIfProfane($badWords); /* customized word list from array */ $badWords = array('bad', 'words'); /* or load from db */ $badWords = $this->getDoctrine()->getManagerForClass(Profanity::class) ->getRepository(Profanity::class) ->getProfanitiesArray(); $this->get('vangrg_profanity.storage')->setProfanities($badWords);
覆盖不良词配置
# add to config.yml vangrg_profanity: storage: your service # By default use 'vangrg_profanity.storage.default', custom storage service must implement "Vangrg\ProfanityBundle\Storage\ProfanitiesStorageInterface" allow_bound_by_words: true # Also match profanities inside words e.g. a.r.s.esomething, somethingarse, but be careful also words like glasses profanities_source: file_name: # your custom filename with profanities format: # profanities source format (default yaml), can be yaml, json or xml
注解用法
<?php namespace AppBundle\Entity; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Validator\Constraints as Assert; use Vangrg\ProfanityBundle\Validator\Constraints as ProfanityAssert; /** * Post * * @ORM\Table(name="post") * @ORM\Entity(repositoryClass="AppBundle\Repository\PostRepository") */ class Post { /** * @var int * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @var string * * @Assert\Length(min=8, max=64) * @ProfanityAssert\ProfanityCheck * @ORM\Column(name="title", type="string", length=64) */ private $title; }
备注
此包基于 https://github.com/mofodojodino/ProfanityFilter 库构建,并对过滤逻辑进行了改进。