当前位置:首页 > PHP

php实现词语过滤

2026-02-16 05:49:12PHP

php实现词语过滤

PHP实现词语过滤的方法

使用PHP实现词语过滤可以通过多种方式完成,以下是几种常见的方法:

php实现词语过滤

使用str_replace函数进行简单替换

$text = "这是一段包含敏感词的文本";
$badWords = ["敏感词", "不良词"];
$replacement = "*";
$filteredText = str_replace($badWords, $replacement, $text);

使用正则表达式进行更复杂的匹配

$text = "包含SensitiveWord的文本";
$pattern = '/sensitiveword/i'; // i表示不区分大小写
$filteredText = preg_replace($pattern, '*', $text);

创建自定义过滤函数

function filterWords($text, $badWords, $replacement = '*') {
    foreach($badWords as $word) {
        $pattern = '/'.preg_quote($word, '/').'/i';
        $text = preg_replace($pattern, $replacement, $text);
    }
    return $text;
}

$text = "测试敏感词过滤功能";
$badWords = ["敏感词", "测试"];
echo filterWords($text, $badWords);

使用数组和匿名函数进行高效过滤

$text = "这段文本需要过滤badword1和BADWORD2";
$badWords = ['badword1', 'badword2'];
$filteredText = array_reduce($badWords, function($carry, $word) {
    return preg_replace("/$word/i", '*', $carry);
}, $text);

从文件或数据库加载敏感词列表

// 从文件加载
$badWords = file('badwords.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

// 从数据库加载
$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
$stmt = $pdo->query('SELECT word FROM bad_words');
$badWords = $stmt->fetchAll(PDO::FETCH_COLUMN);

使用mb_string函数处理多字节字符

$text = "包含日本語の不適切な言葉";
$badWords = ["不適切", "言葉"];
foreach($badWords as $word) {
    if(mb_strpos($text, $word) !== false) {
        $text = str_replace($word, '*', $text);
    }
}

实现模糊匹配过滤

function fuzzyFilter($text, $badWords, $threshold = 70) {
    foreach($badWords as $word) {
        similar_text(strtolower($text), strtolower($word), $percent);
        if($percent >= $threshold) {
            $text = preg_replace('/'.$word.'/i', '*', $text);
        }
    }
    return $text;
}

使用第三方库

可以考虑使用专门的过滤库如:

  • voku/stop-words
  • james-heinrich/php-stop-words

这些方法可以根据具体需求选择或组合使用,实现不同级别的词语过滤功能。

标签: 词语php
分享给朋友:

相关文章

php实现的分页

php实现的分页

PHP 实现分页的方法 基本分页逻辑 分页的核心在于计算总页数、当前页码以及数据偏移量。假设每页显示 10 条数据: $current_page = isset($_GET['page']) ? (…

php数组实现

php数组实现

PHP 数组的基本实现 PHP 数组是一种非常灵活的数据结构,可以存储多个值,并且支持多种类型的键(整数或字符串)。PHP 数组实际上是有序映射(ordered map),可以看作是列表(vector…

php 线程实现

php 线程实现

PHP 线程实现方法 PHP 本身是单线程语言,但可以通过扩展或库实现多线程功能。以下是几种常见的实现方式: 使用 pthreads 扩展 pthreads 是一个 PHP 扩展,允许在 PHP 中…

无限分类实现 php

无限分类实现 php

无限分类的实现方法 无限分类通常用于构建多层级结构的数据,如商品分类、部门架构等。以下是几种常见的实现方式: 邻接列表模式(Adjacency List) 邻接列表是最简单的实现方式,通过在每个记录…

php 实现链表

php 实现链表

PHP 实现链表的方法 链表是一种线性数据结构,由节点组成,每个节点包含数据和指向下一个节点的指针。PHP 中可以通过类和对象来实现链表。 定义链表节点类 创建一个 ListNode 类,用于表示链…

php实现apk下载

php实现apk下载

实现APK下载的PHP代码 创建一个简单的PHP脚本来处理APK文件的下载请求,确保文件传输正确且安全。 <?php $file = 'path/to/your/app.apk'; if (f…