preg_replace单词有异常

时间:2016-02-07 09:30:54

标签: php preg-replace

我在这里和其他网站上阅读了不少帖子,以便使用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,我想允许使用

1 个答案:

答案 0 :(得分:1)

以下是带有'负面看待'断言的解决方案:

...
$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