我正在尝试做我自己的坏词过滤,它工作得很好,当我在一个句子中有多个词时,就可以进行注释。所以现在它所做的是,从数据库中取出值,然后循环遍历,必须替换广告词。
让我说我有(荷兰语)这句话:Deze kanker zooi moet eens stoppen! Het is godverdomme altijd het zelfde zooitje.。以下是数据库中必须替换的单词:
kankergodverdomme
所以我的数据库里有:
很好,当两个词必须被替换时,它不想替换…
我的助手函数:

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;
    }

希望有人能帮我:)
致以最诚挚的问候,
罗宾

最佳答案

对于for each循环中的每个迭代,都将$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);

08-26 08:20