当前位置:首页 > 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实现购物车功能的几种方法。 使用Session存储购物车数据 Session是…

git php实现

git php实现

Git 与 PHP 的集成实现 使用 PHP 执行 Git 命令 通过 PHP 的 exec()、shell_exec() 或 passthru() 函数可以直接调用 Git 命令,适用于服务器端操作…

php验证码的实现

php验证码的实现

PHP 验证码实现方法 使用 GD 库生成基础验证码 创建画布并生成随机字符串作为验证码内容: session_start(); $width = 120; $height = 40; $image…

php实现上传图片

php实现上传图片

上传图片的基本流程 PHP 实现图片上传功能需要处理文件接收、验证、保存等步骤。以下是具体实现方法。 创建 HTML 表单 在 HTML 中创建一个表单,设置 enctype="multipart/…

php搜索功能实现

php搜索功能实现

实现基本的PHP搜索功能 使用MySQL数据库和PHP实现简单的关键词搜索功能。需要确保数据库中有可供搜索的表和数据。 // 连接数据库 $conn = new mysqli('localhost'…

php实现的进度条

php实现的进度条

PHP 实现的进度条方法 在 PHP 中实现进度条通常可以通过命令行脚本(CLI)或 Web 页面两种方式完成。以下是几种常见的实现方法: 命令行进度条 使用 PHP CLI 实现进度条,可以通过不…