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

About using laravel framework to implement sensitive word filtering function

藏色散人
Release: 2021-01-28 08:54:53
forward
2680 people have browsed it

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
Copy after login

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);
  }
}
Copy after login

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));
}
Copy after login

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!

Related labels:
source:learnku.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template