php - Laravel 糟糕的 wordfilter 作为助手

标签 php laravel filter

我正在尝试制作我自己的坏词过滤器,并且效果很好,除非我在一个句子中有多个单词。所以现在它所做的是,它从数据库中取出值,然后循环遍历它并且必须替换广告词。

让我说我有(荷兰语)这句话:Deze kanker zooi moet eens stoppen! Het is godverdomme altijd het zelfde zooitje.。这些是必须在数据库中替换的词:

kankergodverdomme

所以我在我的数据库中有:

values

一切都很好,除非必须替换 2 个 ords,然后它不想替换...

我的辅助函数:

public static function Filter($value)
    {
        $badwords = DB::table('badwords')->get();

        foreach ($badwords as $badword)
        {
            $replaced = str_ireplace($badword->bad_word, $badword->replacement, $value);
        }

    return $replaced;
    }

希望有人能帮助我:)

最诚挚的问候,

罗宾

最佳答案

对于 foreach 循环中的每次迭代,您将 $replaced 的值设置为 str_ireplace 返回的值。
在该函数的末尾,您将返回一个值,其中最后一个坏词应该被替换。

str_ireplace 将单个字符串值或字符串值数组替换为第一个和第二个参数,这意味着您可以创建两个数组,您可以将其填入foreach 循环,然后在循环之后运行 str_ireplace,类似于:

$words = []; 
$replace = [];
foreach ($badwords as $badword) {
    array_push($words, $badword->bad_word);
    array_push($replace, $badword->replacement);
}
return str_ireplace($words, $replace, $value);

关于php - Laravel 糟糕的 wordfilter 作为助手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31489116/

相关文章:

php - json_decode 不适用于我的变量,但适用于它的内容

Laravel Homestead : Nginx failing to start on Vagrant. 需要root密码才能访问Nginx日志

jquery - 用于匹配和突出显示大量变化的正则表达式

javascript - 使用可变参数过滤事物

laravel - 无法使用 Dompdf Laravel 9 加载图像

filter - 与卡尔曼滤波器的传感器融合

PHP preg_match 维度

mysql - 如何获得一个结果与另一个表中的多个数据

php - 在postman中使用phpcurl上传文件到Nextcloud但上传的文件是空的

php - 如何修复 Laravel HttpKernel\Exception 错误