hottomali / profanity-bundle

不良词检查器。

安装: 5

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 7

类型:symfony-bundle

v1.1.6 2019-02-20 10:35 UTC

This package is auto-updated.

Last update: 2024-09-20 03:21:17 UTC


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 库构建,并对过滤逻辑进行了改进。