1
我有一个badwords列表其中有一个是“S.A.” 我的所有单词都保存在一个数组中,我循环遍历数组并进行替换。 S.A.这个词取代了我不想替换的东西,我只需要它就可以替代S.A.作为一个词本身。 所以举例“这个S.A.很糟糕。”应该变成“这很糟糕”。 但现在当我运行它在一个字符串(例如)SEAS中,它将取代它...不知道为什么...PHP:正则表达式替换奇怪的结果
ps:如果然后检查是因为如果字符串$ v是正是坏字,它不应该被删除。 正则表达式中的\ 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);
}
}
我的正则表达式模式有什么问题?!?!
我认为这将是这样的。感谢您提供快速解决方案。 – renevdkooi