当前位置:首页 > PHP

php实现敏感词过滤

2026-01-28 22:51:36PHP

PHP实现敏感词过滤的方法

敏感词过滤是网站开发中常见的需求,以下介绍几种PHP实现敏感词过滤的方法:

使用字符串替换函数

$content = "这是一段包含敏感词的文本";
$sensitiveWords = ["敏感词", "不良词"];
$replacement = "*";

$filteredContent = str_replace($sensitiveWords, $replacement, $content);

这种方法简单直接,适合少量敏感词的情况。

使用正则表达式匹配

$content = "这是一段包含敏感词的文本";
$pattern = '/敏感词|不良词|违禁词/i';
$replacement = "*";

$filteredContent = preg_replace($pattern, $replacement, $content);

正则表达式方法效率更高,适合大量敏感词的情况。

使用Trie树算法

php实现敏感词过滤

对于大规模敏感词库,Trie树算法能提供更好的性能:

class TrieNode {
    public $children = [];
    public $isEnd = false;
}

class SensitiveWordFilter {
    private $root;

    public function __construct() {
        $this->root = new TrieNode();
    }

    public function addWord($word) {
        $node = $this->root;
        $len = mb_strlen($word);

        for ($i = 0; $i < $len; $i++) {
            $char = mb_substr($word, $i, 1);
            if (!isset($node->children[$char])) {
                $node->children[$char] = new TrieNode();
            }
            $node = $node->children[$char];
        }
        $node->isEnd = true;
    }

    public function filter($text, $replaceChar = '*') {
        $result = [];
        $len = mb_strlen($text);

        for ($i = 0; $i < $len; $i++) {
            $node = $this->root;
            $j = $i;

            while ($j < $len) {
                $char = mb_substr($text, $j, 1);
                if (!isset($node->children[$char])) break;

                $node = $node->children[$char];
                if ($node->isEnd) {
                    $result[] = mb_substr($text, $i, $j - $i + 1);
                    $i = $j;
                    break;
                }
                $j++;
            }
        }

        return str_replace($result, $replaceChar, $text);
    }
}

// 使用示例
$filter = new SensitiveWordFilter();
$filter->addWord("敏感词");
$filter->addWord("不良词");
$text = "这是一段包含敏感词和不良词的文本";
echo $filter->filter($text);

使用第三方库

可以考虑使用现成的敏感词过滤库,如:

php实现敏感词过滤

  1. lustre/php-sensitive:一个高性能的敏感词过滤库
  2. fuzzdb:提供大量敏感词数据集

安装示例:

composer require lustre/php-sensitive

使用示例:

use Lustre\Sensitive\SensitiveWordFilter;

$filter = new SensitiveWordFilter();
$filter->addWords(['敏感词', '不良词']);
$text = "这是一段包含敏感词的文本";
echo $filter->filter($text, '*');

性能优化建议

  • 将敏感词库缓存到内存中,避免每次请求都重新加载
  • 对长文本采用分段处理
  • 考虑使用AC自动机算法处理更复杂的匹配需求
  • 定期更新敏感词库

注意事项

  • 处理中文时确保使用mb_系列函数
  • 考虑大小写敏感问题
  • 注意处理特殊字符和空格
  • 对用户输入进行必要的转义

以上方法可以根据实际项目需求选择或组合使用,对于高并发场景建议使用专门的服务或扩展来实现敏感词过滤功能。

标签: 敏感php
分享给朋友:

相关文章

php实现树

php实现树

PHP实现树结构的方法 在PHP中实现树结构通常可以通过递归或迭代的方式完成。以下是几种常见的实现方法: 递归实现树结构 递归是处理树结构的自然方式,尤其适用于具有未知深度的树。 class Tr…

php 实现自动收货

php 实现自动收货

PHP 实现自动收货功能 自动收货功能通常用于电商系统,在订单超过一定时间未手动确认收货时自动完成订单。以下是实现方法: 数据库设计 需要订单表包含以下关键字段: CREATE TABLE ord…

php实现跳转

php实现跳转

PHP 实现页面跳转的方法 在 PHP 中实现页面跳转有多种方式,以下是常见的几种方法及其适用场景: 使用 header() 函数 通过 header() 函数发送 HTTP 头部信息实现跳转。注意…

php实现静态

php实现静态

静态化实现方法 PHP实现静态化主要通过生成HTML文件或缓存机制来减少服务器动态解析的开销。以下是几种常见方法: 生成静态HTML文件 通过file_put_contents()将动态内容保存为H…

php 实现排序

php 实现排序

PHP 实现数组排序的方法 PHP 提供了多种内置函数和方法来实现数组排序,适用于不同的排序需求。以下是一些常见的排序实现方式: 使用 sort() 函数对数组进行升序排序 sort() 函数对数组…

php搜索功能实现的

php搜索功能实现的

PHP 搜索功能实现方法 数据库搜索实现 使用 SQL 的 LIKE 语句进行模糊匹配,适用于小型网站和简单搜索需求。 $searchTerm = $_GET['search']; $query =…