首页 > php框架 > Laravel > 关于用laravel框架实现敏感词汇过滤功能

关于用laravel框架实现敏感词汇过滤功能

藏色散人
发布: 2021-01-28 08:54:53
转载
2684 人浏览过

下面由Laravel教程栏目给大家介绍用laravel框架实现敏感词汇过滤功能的方法,希望对需要的朋友有所帮助!

最近项目有需求,要对用户的签名,回复进行敏感词检测,然后搜到了一个好用的扩展,分享给大家。

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

通过 composer 进行安装:

1

composer require lustre/php-dfa-sensitive

登录后复制

然后在 app 目录下创建 Services ,并添加 SensitiveWords.php

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

<?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);

  }

}

登录后复制

然后我们就可以在项目中,使用 SensitiveWords::getBadWord() 来获取文本中是否有敏感词。

1

2

3

4

$bad_word = SensitiveWords::getBadWord($content);

if (!empty($bad_word)) {

  throw new \Exception(&#39;包含敏感词:&#39; . current($bad_word));

}

登录后复制

在 storage 目录下创建 dict 目录存放敏感词词库,bk.txt …..等等

以上是关于用laravel框架实现敏感词汇过滤功能的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:learnku.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板