preg_replace word with exception


preg_replace word with exception

我在这里和其他网站上阅读了很多帖子,以便使用如下preg_replace创建半工作的脏话过滤器:

function swearwords($word){
    $word = preg_replace('/'bwwww.badword.com'b/', '', $word); //do not remove 'b //to add more copy and put word down
    $word = preg_replace('/'bwww.badword.com'b/', '', $word); //do not remove 'b //to add more copy and put word down
    $word = preg_replace('/'bbadword'b/', '', $word); //do not remove 'b //to add more copy and put word down
    //$word = preg_replace('/'bimg.badword``'b/', '', $word); //do not remove 'b //to add more copy and put word down
    return $word;
}

这是有效的,但我想允许 img.badword 的实例

所以在"badword"前面有.img的地方,我想允许使用

以下是"负面回溯"断言的解决方案:

...
$word = preg_replace('/'b(?<!img'.)badword'b/', '', $word);
...

您也可以尝试以下多合一替代品:

function swearwords($word){
    $word = preg_replace('/'b(w{3,4}'.)*(?<!img'.)badword('.com)*'b/', '', $word);
    return $word;
}

http://php.net/manual/en/regexp.reference.assertions.php