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