我有一个数组 $ 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 的参数,以使其不区分大小写。
感谢您的帮助
答案 0 :(得分:0)
当你检查字符串而不是单个单词时,不要忘记将g修饰符放在i修饰符旁边(在rid的答案中提到)。否则,如果句子中有更多不良单词,它将在第一个单词后停止。
编辑: 刚刚看到用户删除了他的答案,但你可以通过使用i-modifier使其不区分大小写。