我有一个坏词列表,其中一个是“SA”我所有的词都保存在一个数组中,我循环遍历数组并进行替换。SA 这个词替换了我不想替换的东西,我只需要它来替换 SA 作为一个词本身。例如“这个 SA 很糟糕”。应该变成“这很糟糕”。但是现在当我在其中包含(例如)SEAS 的字符串上运行它时,它将替换它......不知道为什么......
ps: if then 检查是因为如果字符串 $v 正好是 badword,它不应该被删除。正则表达式中的 \b 单词指示符不应该使单词完全匹配吗?
ps:我只想删除完整的单词,而不是单词的一部分。如果我在坏名单中有苹果,但有人写了苹果,它不应该被替换。
foreach ($this->badwordArr as $badword) {
if (strtoupper($v) == strtoupper($badword)) {
// no replace because its the only word
$data[$key] = $v;
} else {
$pattern = "/\b$badword\b/i";
$v = preg_replace($pattern, " ", $v);
}
}
我的正则表达式模式有什么问题?!?!