Home  >  Article  >  PHP Framework  >  About using laravel framework to implement sensitive word filtering function

About using laravel framework to implement sensitive word filtering function

藏色散人
藏色散人forward
2021-01-27 13:50:232632browse

The following column Laravel Tutorial will introduce to you how to use the laravel framework to implement the sensitive word filtering function. I hope it will be helpful to friends in need!

Recently, there is a need for a project to detect sensitive words in user signatures and replies, and then I found a useful extension and shared it with everyone.

https://github.com/FireLustre/php-dfa-sensitive

Install through composer:

composer require lustre/php-dfa-sensitive

Then in the app directory Create Services and add SensitiveWords.php

<?php
namespace App\Services;
use DfaFilter\SensitiveHelper;
class SensitiveWords
{
  protected static $handle = null;
  private function __construct()
  {
  }
  private function __clone()
  {
  }
  /**
   * 获取实例
   */
  public static function getInstance($word_path = [])
  {
    if (!self::$handle) {
      //默认的一些敏感词库
      $default_path = [
        storage_path(&#39;dict/bk.txt&#39;),
        storage_path(&#39;dict/fd.txt&#39;),
        storage_path(&#39;dict/ms.txt&#39;),
        storage_path(&#39;dict/qt.txt&#39;),
        storage_path(&#39;dict/sq.txt&#39;),
        storage_path(&#39;dict/tf.txt&#39;),
      ];
      $paths = array_merge($default_path, $word_path);
      self::$handle = SensitiveHelper::init();
      if (!empty($paths)) {
        foreach ($paths as $path) {
          self::$handle->setTreeByFile($path);
        }
      }
    }
    return self::$handle;
  }
  /**
   * 检测是否含有敏感词
   */
  public static function isLegal($content)
  {
    return self::getInstance()->islegal($content);
  }
  /**
   * 敏感词过滤
   */
  public static function replace($content, $replace_char = &#39;&#39;, $repeat = false, $match_type = 1)
  {
    return self::getInstance()->replace($content, $replace_char, $repeat, $match_type);
  }
  /**
   * 标记敏感词
   */
  public static function mark($content, $start_tag, $end_tag, $match_type = 1)
  {
    return self::getInstance()->mark($content, $start_tag, $end_tag, $match_type);
  }
  /**
   * 获取文本中的敏感词
   */
  public static function getBadWord($content, $match_type = 1, $word_num = 0)
  {
    return self::getInstance()->getBadWord($content, $match_type, $word_num);
  }
}

Then we can use SensitiveWords::getBadWord() in the project to get whether there are sensitive words in the text.

$bad_word = SensitiveWords::getBadWord($content);
if (!empty($bad_word)) {
  throw new \Exception(&#39;包含敏感词:&#39; . current($bad_word));
}

Create a dict directory in the storage directory to store the sensitive word dictionary, bk.txt...etc.

The above is the detailed content of About using laravel framework to implement sensitive word filtering function. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:learnku.com. If there is any infringement, please contact admin@php.cn delete