preg_replace_callback,不区分大小写

时间:2014-01-21 13:30:44

标签: php preg-replace-callback

我有一个数组 $ bad_words ,其中包含英语粗鲁的单词及其点缀的等价物,我使用 preg_replace_callback ,如下所示:

$bad_words = array(
    "badword" => "s••t",
    "badword2" => "f••k"
    ...
);

function filter_bad_words($matches)
{
    global $bad_words;
    $replace = $bad_words[$matches[0]];
    return isset($replace) ? $replace : $matches[0];
}

// $JSON is a string variable
preg_replace_callback('!\w+!', 'filter_bad_words', $JSON);

此解决方案不区分大小写,我无法确定要传递给 preg_replace_callback 的参数,以使其不区分大小写。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

当你检查字符串而不是单个单词时,不要忘记将g修饰符放在i修饰符旁边(在rid的答案中提到)。否则,如果句子中有更多不良单词,它将在第一个单词后停止。

编辑: 刚刚看到用户删除了他的答案,但你可以通过使用i-modifier使其不区分大小写。

http://www.regular-expressions.info/modifiers.html