【问题标题】:Laravel bad wordfilter as an helperLaravel 不好的 wordfilter 作为助手
【发布时间】:2015-10-07 23:01:39
【问题描述】:

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

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

kankergodverdomme

所以我的数据库中有:

这都很好,除了必须更换 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;
    }

希望有人可以帮助我:)

最诚挚的问候,

罗宾

【问题讨论】:

    标签: php laravel filter


    【解决方案1】:

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

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

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

    【讨论】:

    • 因此,当我创建两个变量的数组对象时,它应该可以工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    • 2021-03-07
    • 2019-06-12
    • 2018-07-03
    • 1970-01-01
    • 2016-02-08
    • 2021-12-02
    相关资源
    最近更新 更多