2016-02-07 48 views
0

我已经为了创造半在这里工作和在其他网站看了不少帖子脏话过滤器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,我希望允许使用

+0

''/ \ B [^ I] [^ M] [^克] [^ 。] badword \ b /'' – arkascha

回答

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

+0

一体式解决方案精彩。谢谢 – BravoZuluInc

+0

@BravoZuluInc,欢迎您! – RomanPerekhrest

+0

再来一次,我需要允许img.badword和imgmgr.badword – BravoZuluInc